| This folder mirrors a small subset of artifacts from Maven Central [1]. |
| |
| In order to create this mirror, we do the following steps: |
| |
| 1. Create a settings.xml [2] file that specifies the location for the |
| repository. |
| 2. Run maven to build the IDE. This process will use Tycho and download |
| and cache all the dependencies in the specified repository. |
| 3. Remove the folder p2 inside the repository, which contains artifacts |
| generated during the build in step 2. We only need cached artifacts. |
| 4. Update settings.xml to specify that it should run in offline mode, |
| and make sure that the repository has all the necessary contents. |
| |
| Step 1: Create a settings.xml |
| |
| <?xml version="1.0" encoding="UTF-8"?> |
| <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" |
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 |
| http://maven.apache.org/xsd/settings-1.0.0.xsd"> |
| <localRepository>/path/to/tycho/tycho-dependencies-m2repo</localRepository> |
| <offline>false</offline> |
| </settings> |
| |
| Step 2: Run maven using the above settings.xml |
| |
| $ cd /path/to/folder/with/pom.xml |
| $ mvn -s /path/to/above/settings.xml package |
| |
| This should download and cache all the necessary dependencies in the repository |
| specified in the settings.xml. |
| |
| Step 3: Remove unnecessary files from the repository. It turns out that Tycho |
| also populates a whole bunch of eclipse plugins into the p2 folder inside the |
| repository. These don't need to be checked in, so they can be removed. |
| |
| Step 4: Validate that the repository contains everything necessary by changing |
| the offline attribute to true, and then rebuild. |
| |
| If everything goes well, then the repository can be checked in. |
| |
| TODO |
| |
| This method could possibly be automated using the Maven Dependency plugin [3]. |
| The "copy-dependencies" task from that plugin allows you to recursively copy |
| all the dependencies of a particular POM. Here is an example command to download |
| all the dependencies for com.android.tools:sdklib:22.7.2 |
| |
| $ mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:copy-dependencies \ |
| -f ~/.m2/repository/com/android/tools/sdklib/22.7.2/sdklib-22.7.2.pom \ |
| -DoutputDirectory=`pwd`/target \ |
| -Dmdep.copyPom=true \ |
| -Dmdep.useRepositoryLayout=true |
| |
| Unfortunately, this doesn't seem to work for the Tycho plugin since it seems |
| like a more complicated multi module setup. The POM for the Tycho plugin specifies |
| sub modules which the dependency plugin doesn't seem to be able to cope with. |
| |
| [1] http://search.maven.org/ |
| [2] https://maven.apache.org/settings.html |
| [3] http://maven.apache.org/plugins/maven-dependency-plugin/ |