61 lines
2.6 KiB
Text
61 lines
2.6 KiB
Text
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/
|