|
|
(11 intermediate revisions by 7 users not shown) |
Line 1: |
Line 1: |
− | A prototype of Maven repository support at Eclipse is undergoing creation.
| + | The original content on this page is out of date. maven.eclipse.org was decommissioned per [http://bugs.eclipse.org/405750 Bug 405750]. repo.eclipse.org replaced maven.eclipse.org and details on the new service can be found at [[Services/Nexus]]. |
− | | + | |
− | The site currently runs Nexus and is available at http://maven.eclipse.org | + | |
− | | + | |
− | = Proposal =
| + | |
− | | + | |
− | Nexus is capable of segregating and aggregating individual repositories. To facilitate the management of artefacts hosted, it is proposed that the Nexus repository is configured with a number of subsidiary repositories which will hold different content, as follows:
| + | |
− | | + | |
− | * <code>/orbit</code> - for holding Orbit approved external dependencies
| + | |
− | * <code>/central</code> - for aggregating:
| + | |
− | ** <code>/repo1</code> - mirror of http://repo1.maven.org
| + | |
− | ** <code>/repo2</code> - mirror of http://repo1.maven.org
| + | |
− | * <code>/release</code> - for storing final releases, e.g. Helios 3.6, 3.6.1, 3.6.2
| + | |
− | * <code>/milestone</code> - for storing milestone releases (for the latest build only?) e.g. 3.7M1, 3.7M2
| + | |
− | * <code>/integration</code> - for storing -SNAPSHOT equivalents of integration (I) builds
| + | |
− | * <code>/nightly</code> - for storing -SNAPSHOT equivalents of nightly (N) builds
| + | |
− | | + | |
− | It is proposed that the release entries are permanently available, whilst milestones may be cleared out after the final release, and nightly and integration builds are cleared out automatically.
| + | |
− | | + | |
− | == Repositories ==
| + | |
− | | + | |
− | In order to build against known good sources, the 'repositories' should be configured such that they only consume from <code>/central</code> for acquisition of Maven plugins, and not to satisfy build dependencies. In other words, something like:
| + | |
− | | + | |
− | <pre>
| + | |
− | <repositories>
| + | |
− | <repository>
| + | |
− | <id>orbit</id>
| + | |
− | <name>Orbit approved dependency repository</name>
| + | |
− | <layout>maven2</layout>
| + | |
− | <url>http://maven.eclipse.org/orbit</url>
| + | |
− | <snapshots><enabled>false</enabled></snapshot>
| + | |
− | </repository>
| + | |
− | </repositories>
| + | |
− | <pluginRepositories>
| + | |
− | <pluginRepository>
| + | |
− | <id>central</id>
| + | |
− | <name>Maven central</name>
| + | |
− | <layout>maven2</layout>
| + | |
− | <url>http://maven.eclipse.org/central</url>
| + | |
− | <snapshots><enabled>false</enabled></snapshot>
| + | |
− | <releases><updatePolicy>never</updatePolicy></releases>
| + | |
− | </pluginRepository>
| + | |
− | </pluginRepositories>
| + | |
− | </pre>
| + | |
− | | + | |
− | This will enable plugin dependencies (e.g. Tycho) to be resolved whilst not allowing project dependencies to consume other than from the Orbit pre-approved repository.
| + | |
− | | + | |
− | == Profiles ==
| + | |
− | | + | |
− | To allow different repositories to be switched between, we could use the profile mechanism in Maven to allow other repositories to be brought in:
| + | |
− | | + | |
− | <pre>
| + | |
− | <profiles>
| + | |
− | <profile>
| + | |
− | <id>milestone</id>
| + | |
− | <activation><activeByDefault>false</activeByDefault></activation>
| + | |
− | <repositories>
| + | |
− | <repository>
| + | |
− | <id>milestone</id>
| + | |
− | <name>Milestone releases</name>
| + | |
− | <url>http://maven.eclipse.org/milestone</url>
| + | |
− | <snapshots><enabled>false</enabled></snapshots>
| + | |
− | </repository>
| + | |
− | </repositories>
| + | |
− | </profile>
| + | |
− | <profile>
| + | |
− | <id>integration</id>
| + | |
− | <activation><activeByDefault>false</activeByDefault></activation>
| + | |
− | <repositories>
| + | |
− | <repository>
| + | |
− | <id>integration</id>
| + | |
− | <name>Integration releases</name>
| + | |
− | <url>http://maven.eclipse.org/integration</url>
| + | |
− | <snapshots><enabled>true</enabled></snapshots>
| + | |
− | </repository>
| + | |
− | </repositories>
| + | |
− | </profile>
| + | |
− | <profile>
| + | |
− | <id>nightly</id>
| + | |
− | <activation><activeByDefault>false</activeByDefault></activation>
| + | |
− | <repositories>
| + | |
− | <repository>
| + | |
− | <id>nightly</id>
| + | |
− | <name>Nightly releases</name>
| + | |
− | <url>http://maven.eclipse.org/nightly</url>
| + | |
− | <snapshots><enabled>true</enabled></snapshots>
| + | |
− | </repository>
| + | |
− | </repositories>
| + | |
− | </profile>
| + | |
− | </profiles>
| + | |
− | </pre>
| + | |
− | | + | |
− | This will allow compilation against a milestone, integration or nightly branch set of dependencies with e.g. <code>maven -P nightly</code>.
| + | |
− | | + | |
− | == Related Bugs ==
| + | |
− | | + | |
− | * [https://bugs.eclipse.org/bugs/show_bug.cgi?id=283745 bug 283745] - Provide a Maven repository for stuff built at Eclipse
| + | |
− | * [https://bugs.eclipse.org/bugs/show_bug.cgi?id=340416 bug 340416] - Resolving dependencies from Orbit
| + | |
The original content on this page is out of date. maven.eclipse.org was decommissioned per Bug 405750. repo.eclipse.org replaced maven.eclipse.org and details on the new service can be found at Services/Nexus.