Maven OSGi plugin
authorMathieu Baudier <mbaudier@argeo.org>
Wed, 18 Mar 2009 18:02:06 +0000 (18:02 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Wed, 18 Mar 2009 18:02:06 +0000 (18:02 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk/maven@2281 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

maven-argeo-osgi-plugin/.classpath [new file with mode: 0644]
maven-argeo-osgi-plugin/.project [new file with mode: 0644]
maven-argeo-osgi-plugin/pom.xml [new file with mode: 0644]
maven-argeo-osgi-plugin/src/main/scripts/argeo-osgi.build.xml [new file with mode: 0644]
maven-argeo-osgi-plugin/src/main/scripts/argeo-osgi.mojos.xml [new file with mode: 0644]

diff --git a/maven-argeo-osgi-plugin/.classpath b/maven-argeo-osgi-plugin/.classpath
new file mode 100644 (file)
index 0000000..0fd79a7
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+       <classpathentry kind="src" path="src/main/java"/>
+       <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
+       <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+       <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
+       <classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/maven-argeo-osgi-plugin/.project b/maven-argeo-osgi-plugin/.project
new file mode 100644 (file)
index 0000000..d57bc6c
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+       <name>maven-argeo-osgi-plugin</name>
+       <comment></comment>
+       <projects>
+       </projects>
+       <buildSpec>
+               <buildCommand>
+                       <name>org.eclipse.jdt.core.javabuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.maven.ide.eclipse.maven2Builder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+       </buildSpec>
+       <natures>
+               <nature>org.eclipse.jdt.core.javanature</nature>
+               <nature>org.maven.ide.eclipse.maven2Nature</nature>
+       </natures>
+</projectDescription>
diff --git a/maven-argeo-osgi-plugin/pom.xml b/maven-argeo-osgi-plugin/pom.xml
new file mode 100644 (file)
index 0000000..297f2d4
--- /dev/null
@@ -0,0 +1,75 @@
+<project>\r
+       <modelVersion>4.0.0</modelVersion>\r
+       <groupId>org.argeo.slc.maven</groupId>\r
+       <artifactId>maven-argeo-osgi-plugin</artifactId>\r
+       <version>0.1.1</version>\r
+       <packaging>maven-plugin</packaging>\r
+       <name>Argeo OSGi Plugin</name>\r
+\r
+       <build>\r
+               <plugins>\r
+                       <plugin>\r
+                               <artifactId>maven-compiler-plugin</artifactId>\r
+                               <configuration>\r
+                                       <source>1.4</source>\r
+                                       <target>1.4</target>\r
+                               </configuration>\r
+                       </plugin>\r
+                       <plugin>\r
+                               <artifactId>maven-plugin-plugin</artifactId>\r
+                               <dependencies>\r
+                                       <dependency>\r
+                                               <groupId>org.apache.maven</groupId>\r
+                                               <artifactId>maven-plugin-tools-ant\r
+                                               </artifactId>\r
+                                               <version>2.1</version>\r
+                                       </dependency>\r
+                               </dependencies>\r
+                       </plugin>\r
+               </plugins>\r
+       </build>\r
+       <dependencies>\r
+               <dependency>\r
+                       <groupId>org.apache.maven</groupId>\r
+                       <artifactId>maven-plugin-api</artifactId>\r
+                       <version>2.0</version>\r
+               </dependency>\r
+               <dependency>\r
+                       <groupId>org.apache.maven</groupId>\r
+                       <artifactId>maven-script-ant</artifactId>\r
+                       <version>2.0.9</version>\r
+               </dependency>\r
+               <dependency>\r
+                       <groupId>org.apache.maven</groupId>\r
+                       <artifactId>maven-project</artifactId>\r
+                       <version>2.0.7</version>\r
+               </dependency>\r
+               <dependency>\r
+                       <groupId>ant-contrib</groupId>\r
+                       <artifactId>ant-contrib</artifactId>\r
+                       <version>1.0b3</version>\r
+                       <exclusions>\r
+                               <exclusion>\r
+                                       <groupId>ant</groupId>\r
+                                       <artifactId>ant</artifactId>\r
+                               </exclusion>\r
+                       </exclusions>\r
+               </dependency>\r
+       </dependencies>\r
+       <distributionManagement>\r
+               <repository>\r
+                       <uniqueVersion>false</uniqueVersion>\r
+                       <id>argeo-restricted</id>\r
+                       <name>Argeo FOSS Repository</name>\r
+                       <url>file:///var/argeo/maven2/argeo\r
+                       </url>\r
+               </repository>\r
+               <snapshotRepository>\r
+                       <uniqueVersion>true</uniqueVersion>\r
+                       <id>argeo-snapshots-restricted</id>\r
+                       <name>Argeo FOSS Snapshots Repository</name>\r
+                       <url>file:///var/argeo/maven2/argeo-snapshots\r
+                       </url>\r
+               </snapshotRepository>\r
+       </distributionManagement>\r
+</project>
diff --git a/maven-argeo-osgi-plugin/src/main/scripts/argeo-osgi.build.xml b/maven-argeo-osgi-plugin/src/main/scripts/argeo-osgi.build.xml
new file mode 100644 (file)
index 0000000..4d32de3
--- /dev/null
@@ -0,0 +1,145 @@
+<project>
+
+       <taskdef resource="net/sf/antcontrib/antlib.xml" />
+
+       <target name="simple-bundles" depends="generate-poms,deploy-pom">
+       </target>
+       
+       <target name="generate-poms">
+
+               <property name="targetDir" location="target" />
+               <mkdir dir="${targetDir}" />
+
+               <copy todir="${targetDir}/bundles">
+                       <fileset dir="${bundlesBase}" includes="**" excludes="*.xml,.*,target/**" />
+               </copy>
+
+               <pathconvert property="dirs" pathsep=",">
+                       <path>
+                               <dirset dir="${targetDir}/bundles" includes="*" />
+                       </path>
+                       <mapper>
+                               <flattenmapper />
+                       </mapper>
+               </pathconvert>
+
+               <if>
+                       <contains string="${projectVersion}" substring="-SNAPSHOT" />
+                       <then>
+                               <property name="qualifier" value="SNAPSHOT" />
+                       </then>
+                       <else>
+                               <tstamp>
+                                       <format property="qualifier" pattern="yyyyMMdd" />
+                               </tstamp>
+                       </else>
+               </if>
+
+
+               <property name="aggregatorPomFile" value="${targetDir}/bundles/pom.xml" />
+               <echo file="${aggregatorPomFile}">
+                       <![CDATA[
+<project>
+                       <modelVersion>4.0.0</modelVersion>
+                       <groupId>${projectGroupId}</groupId>
+                       <artifactId>aggregator</artifactId>
+                       <version>${projectVersion}</version>
+                       <packaging>pom</packaging>
+                       <modules>
+                       ]]></echo>
+                       <for list="${dirs}" param="dir">
+
+                               <sequential>
+                                       <echo file="${aggregatorPomFile}" append="true">
+                                               <![CDATA[<module>@{dir}</module>]]></echo>
+                       </sequential>
+               </for>
+               <echo file="${aggregatorPomFile}" append="true">
+                       <![CDATA[
+                       <module>bundles</module>
+               </modules>
+               </project>
+       ]]></echo>
+
+       <for list="${dirs}" param="dir">
+
+               <sequential>
+                       <echo>Generate POM for @{dir}</echo>
+
+                       <var name="bundleDir" value="${targetDir}/bundles/@{dir}" />
+                       <mkdir dir="${bundleDir}/target" />
+
+
+                       <replace file="${bundleDir}/META-INF/MANIFEST.MF" token="qualifier" value="${qualifier}" />
+
+                       <copy file="${bundleDir}/META-INF/MANIFEST.MF" tofile="${bundleDir}/target/bundle.properties" />
+                       <replace file="${bundleDir}/target/bundle.properties" token=" " value="" />
+                       <replace file="${bundleDir}/target/bundle.properties" token=":" value="=" />
+                       <replace file="${bundleDir}/target/bundle.properties" token=".SNAPSHOT" value="-SNAPSHOT" />
+                       <var file="${bundleDir}/target/bundle.properties" />
+
+                       <copy file="pom-template.xml" toFile="${bundleDir}/pom.xml">
+                               <filterset>
+                                       <filtersfile file="${bundleDir}/target/bundle.properties" />
+                               </filterset>
+                       </copy>
+
+               </sequential>
+       </for>
+
+</target>
+
+<target name="deploy-pom">
+
+       <property name="targetDir" location="target" />
+
+       <pathconvert property="dirs" pathsep=",">
+               <path>
+                       <dirset dir="${targetDir}/bundles" includes="*" />
+               </path>
+               <mapper>
+                       <flattenmapper />
+               </mapper>
+       </pathconvert>
+
+       <mkdir dir="${targetDir}/bundles/bundles" />
+       <property name="deployPomFile" value="${targetDir}/bundles/bundles/pom.xml" />
+
+       <echo file="${deployPomFile}">
+               <![CDATA[
+<project>
+               <modelVersion>4.0.0</modelVersion>
+               <groupId>${projectGroupId}</groupId>
+               <artifactId>bundles</artifactId>
+               <version>${projectVersion}</version>
+               <packaging>pom</packaging>
+               <dependencies>
+                       ]]></echo>
+
+               <for list="${dirs}" param="dir">
+
+                       <sequential>
+                               <echo>Add @{dir} to deploy POM</echo>
+                               <mkdir dir="${targetDir}" />
+
+                               <var name="bundleDir" value="${targetDir}/bundles/@{dir}" />
+                               <var file="${bundleDir}/target/bundle.properties" />
+
+                               <echo file="${deployPomFile}" append="true">
+                                       <![CDATA[
+                                       <dependency>
+                                       <groupId>${projectGroupId}</groupId>
+                                       <artifactId>${Bundle-SymbolicName}</artifactId>
+                                       <version>${Bundle-Version}</version>
+                               </dependency>
+       ]]></echo>
+               </sequential>
+       </for>
+
+       <echo file="${deployPomFile}" append="true">
+               <![CDATA[
+               </dependencies>
+       </project>
+       ]]></echo>
+</target>
+</project>
\ No newline at end of file
diff --git a/maven-argeo-osgi-plugin/src/main/scripts/argeo-osgi.mojos.xml b/maven-argeo-osgi-plugin/src/main/scripts/argeo-osgi.mojos.xml
new file mode 100644 (file)
index 0000000..a29990b
--- /dev/null
@@ -0,0 +1,77 @@
+<pluginMetadata>
+       <mojos>
+               <mojo>
+                       <goal>simple-bundles</goal>
+                       <call>simple-bundles</call>
+                       <description>
+                               Process a simple bundle (no Java)
+                       </description>
+
+                       <requiresProject>true</requiresProject>
+
+                       <parameters>
+                               <parameter>
+                                       <name>bundlesBase</name>
+                                       <property>bundlesBase</property>
+                                       <required>true</required>
+                                       <defaultValue>bundles</defaultValue>
+                                       <type>java.io.File</type>
+                                       <description>The base directory for the bundles.
+                                       </description>
+                               </parameter>
+                               <parameter>
+                                       <name>projectVersion</name>
+                                       <property>projectVersion</property>
+                                       <required>true</required>
+                                       <readonly>true</readonly>
+                                       <defaultValue>${project.version}</defaultValue>
+                                       <type>java.lang.String</type>
+                                       <description>The group id of the project currently being built.
+                                       </description>
+                               </parameter>
+                               <parameter>
+                                       <name>projectGroupId</name>
+                                       <property>projectGroupId</property>
+                                       <required>true</required>
+                                       <readonly>true</readonly>
+                                       <defaultValue>${project.groupId}</defaultValue>
+                                       <type>java.lang.String</type>
+                                       <description>The group id of the project currently being built.
+                                       </description>
+                               </parameter>
+                       </parameters>
+               </mojo>
+               <mojo>
+                       <goal>deploy-pom</goal>
+                       <call>deploy-pom</call>
+                       <description>
+                               Generate a POM with the dependencies
+                       </description>
+
+                       <requiresProject>true</requiresProject>
+                       <parameters>
+                               <parameter>
+                                       <name>projectGroupId</name>
+                                       <property>projectGroupId</property>
+                                       <required>true</required>
+                                       <readonly>true</readonly>
+                                       <defaultValue>${project.groupId}</defaultValue>
+                                       <type>java.lang.String</type>
+                                       <description>The group id of the project currently being built.
+                                       </description>
+                               </parameter>
+                               <parameter>
+                                       <name>projectVersion</name>
+                                       <property>projectVersion</property>
+                                       <required>true</required>
+                                       <readonly>true</readonly>
+                                       <defaultValue>${project.version}</defaultValue>
+                                       <type>java.lang.String</type>
+                                       <description>The group id of the project currently being built.
+                                       </description>
+                               </parameter>
+                       </parameters>
+
+               </mojo>
+       </mojos>
+</pluginMetadata>
\ No newline at end of file