Skip to main content
Jump to: navigation, search

Difference between revisions of "Maven"

(Added initial page)
 
(Replaced content with "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.ecl...")
 
(12 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>.
+

Latest revision as of 10:26, 4 March 2014

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.

Back to the top