Author: khmarbaise
Date: Mon Mar 20 20:19:37 2017
New Revision: 1787841

URL: http://svn.apache.org/viewvc?rev=1787841&view=rev
Log:
Added maven ci friendly documentation

Added:
    maven/site/trunk/content/markdown/maven-ci-friendly.md
Modified:
    maven/site/trunk/content/markdown/docs/3.5.0-beta-1/release-notes.md

Modified: maven/site/trunk/content/markdown/docs/3.5.0-beta-1/release-notes.md
URL: 
http://svn.apache.org/viewvc/maven/site/trunk/content/markdown/docs/3.5.0-beta-1/release-notes.md?rev=1787841&r1=1787840&r2=1787841&view=diff
==============================================================================
--- maven/site/trunk/content/markdown/docs/3.5.0-beta-1/release-notes.md 
(original)
+++ maven/site/trunk/content/markdown/docs/3.5.0-beta-1/release-notes.md Mon 
Mar 20 20:19:37 2017
@@ -132,7 +132,7 @@ Thank you also for your time and feedbac
    has been fixed [MNG-6057], [MNG-6090] and [MNG-5895]. It is very important 
to
    know if you are using the previously named properties for a version in your 
    pom you have to use [flatten-maven-plugin] if you like to do an `mvn 
install` 
-   or `mvn deploy`.
+   or `mvn deploy` more details can be found at [Maven CI 
Friendly](/maven-ci-friendly.html).
 
  * The two known issues from 3.5.0-alpha-1 have been fixed [MNG-6177], 
[MNG-6115]
 

Added: maven/site/trunk/content/markdown/maven-ci-friendly.md
URL: 
http://svn.apache.org/viewvc/maven/site/trunk/content/markdown/maven-ci-friendly.md?rev=1787841&view=auto
==============================================================================
--- maven/site/trunk/content/markdown/maven-ci-friendly.md (added)
+++ maven/site/trunk/content/markdown/maven-ci-friendly.md Mon Mar 20 20:19:37 
2017
@@ -0,0 +1,188 @@
+# Maven CI Friendly Versions
+
+Starting with Maven 3.5.0-beta-1 you can use the `${revision}`, `${sha1}` 
+and/or `${changelist}` as placeholders for the version in your pom file. 
+
+## Single Project Setup
+
+This can look like this:
+
+```xml
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache</groupId>
+    <artifactId>apache</artifactId>
+    <version>18</version>
+  </parent>
+  <groupId>org.apache.maven.ci</groupId>
+  <artifactId>ci-parent</artifactId>
+  <name>First CI Friendly</name>
+  <version>${revision}</version>
+  ...
+</project>
+```
+
+  This is of course a simple situation where we use only `${revision}` for 
brevity
+  to show the general course.
+
+
+  Based on the above pom you can build your project using:
+
+```
+mvn clean package
+```
+
+  But wait there is a problem? Which version will the artifacts have? So you 
need
+  to define the version for your artifacts. The first possibility is to use 
the command
+  line like this:
+
+```
+mvn -Drevision=1.0.0-SNAPSHOT clean package
+```
+
+  This wil become cumbersome over the time. So the other solution for this is 
+  to simply use a property inside the pom file which looks like this:
+
+```xml
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache</groupId>
+    <artifactId>apache</artifactId>
+    <version>18</version>
+  </parent>
+  <groupId>org.apache.maven.ci</groupId>
+  <artifactId>ci-parent</artifactId>
+  <name>First CI Friendly</name>
+  <version>${revision}</version>
+  ...
+  <properties>
+    <revision>1.0.0-SNAPSHOT</revision>
+  </properties>
+</project>
+```
+
+  So now you can simply call Maven as usual like `mvn clean package`.
+
+  You can of course change the version via the command line like this:
+
+```
+mvn -Drevision=2.0.0-SNAPSHOT clean package
+```
+ 
+  Of cource you can use the `.mvn/maven.config` file for this.
+
+## Multi Module Setup
+
+  So now let us take a look into a situation where we have a multi module
+  build. We have a parent pom and one or more childs.
+  The parent pom will look like this:
+
+```xml
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache</groupId>
+    <artifactId>apache</artifactId>
+    <version>18</version>
+  </parent>
+  <groupId>org.apache.maven.ci</groupId>
+  <artifactId>ci-parent</artifactId>
+  <name>First CI Friendly</name>
+  <version>${revision}</version>
+  ...
+  <properties>
+    <revision>1.0.0-SNAPSHOT</revision>
+  </properties>
+  <modules>
+    <module>child1</module>
+    ..
+  </modules>
+</project>
+```
+
+  The child will look like this:
+
+```xml
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.maven.ci</groupId>
+    <artifactId>ci-parent</artifactId>
+    <version>${revision}</version>
+  </parent>
+  <groupId>org.apache.maven.ci</groupId>
+  <artifactId>ci-child</artifactId>
+   ...
+</project>
+```
+
+  A multi module build can of course build the same way as the single project 
setup. You should
+  define the version either via property in the parent or use the 
`.mvn/maven.config` file.
+
+
+## Install / Deploy
+
+  If you like to install or deploy artifacts by using the above setup you 
**have to use**
+  the [flatten-maven-plugin][flatten-maven-plugin] otherwise you will 
install/deploy artifacts 
+  in your repository which will not be cosumable by older Maven versions. Such 
kind of setup
+  will look like this:
+
+
+```xml
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache</groupId>
+    <artifactId>apache</artifactId>
+    <version>18</version>
+  </parent>
+  <groupId>org.apache.maven.ci</groupId>
+  <artifactId>ci-parent</artifactId>
+  <name>First CI Friendly</name>
+  <version>${revision}</version>
+  ...
+  <properties>
+    <revision>1.0.0-SNAPSHOT</revision>
+  </properties>
+
+ <build>
+  <plugins>
+    <plugin>
+      <groupId>org.codehaus.mojo</groupId>
+      <artifactId>flatten-maven-plugin</artifactId>
+      <version>1.0.0</version>
+      <configuration>
+        <updatePomFile>true</updatePomFile>
+      </configuration>
+      <executions>
+        <execution>
+          <id>flatten</id>
+          <phase>process-resources</phase>
+          <goals>
+            <goal>flatten</goal>
+          </goals>
+        </execution>
+        <execution>
+          <id>flatten.clean</id>
+          <phase>clean</phase>
+          <goals>
+            <goal>clean</goal>
+          </goals>
+        </execution>
+      </executions>
+    </plugin>
+  </plugins>
+  </build>
+  <modules>
+    <module>child1</module>
+    ..
+  </modules>
+</project>
+```
+
+
+
+[flatten-maven-plugin]: http://www.mojohaus.org/flatten-maven-plugin/ 
+


Reply via email to