]> source.dussan.org Git - vaadin-framework.git/commitdiff
Refactor OSGi manifest attribute handling to support import/export better (#9793) 75/75/2
authorArtur Signell <artur@vaadin.com>
Mon, 8 Oct 2012 13:00:37 +0000 (16:00 +0300)
committerArtur Signell <artur@vaadin.com>
Tue, 9 Oct 2012 06:59:28 +0000 (09:59 +0300)
Change-Id: Iae53213b40a688b27a4195fa25c998d3ba43cba3

build.properties
common.xml

index fb08ef66908b959fc4b1ccfb494e9a8a01b5fe4f..548169c4573f697d8b41db31f6b8fac9c7f3bc78 100644 (file)
@@ -2,6 +2,7 @@ javadoc.doctitle=<h1>Vaadin</h1>
 javadoc.bottom=<i>Copyright &#169; 2000-2011 Vaadin Ltd. All Rights Reserved.</i>
 ivy.organisation=com.vaadin
 vaadin.vendor=Vaadin Ltd
+vaadin.url=http://vaadin.com
 vaadin.java.version=1.6
 vaadin.version=0.0.0.unversioned-development-build
 
index ffaf27b73500f5a5d114dd8f6f321f5b5e0d4cbc..bd18e7d522134421407fd60046bcdd935fae7054 100644 (file)
                <property name="src" location="{$result.dir}/../src" />
 
                <union id="jar.files">
-                       <fileset dir="${classes}" excludes="${classes.exclude}" />
-                       <fileset dir="${src}" excludes="${jar.exclude}" />
+                       <fileset dir="${classes}" excludes="${classes.exclude}" erroronmissingdir="false" />
+                       <fileset dir="${src}" excludes="${jar.exclude}" erroronmissingdir="false" />
                        <fileset refid="common.files.for.all.jars" />
                        <union refid="extra.jar.includes" />
                </union>
+
                <jar destfile="${result.jar}" duplicate="fail" index="true">
                        <manifest>
-                               <attribute name="Implementation-Vendor" value="Vaadin Ltd" />
-                               <attribute name="Implementation-URL" value="http://vaadin.com" />
+                               <attribute name="Implementation-Vendor" value="${vaadin.vendor}" />
+                               <attribute name="Implementation-URL" value="${vaadin.url}" />
                                <attribute name="Implementation-Version" value="${vaadin.version}" />
-                               <attribute name="Bundle-Version" value="${vaadin.version}" />
-                               <attribute name="Bundle-ManifestVersion" value="2" />
-                               <attribute name="Bundle-Name" value="${module.name}" />
-                               <attribute name="Bundle-SymbolicName" value="${module.symbolic}" />
-                               <attribute name="Bundle-Vendor" value="${vaadin.vendor}" />
-                               <attribute name="Bundle-RequiredExecutionEnvironment" value="JavaSE-1.6" />
                        </manifest>
                        <union refid="jar.files" />
                </jar>
 
-               <antcall target="common.generate-osgi-exports">
+               <antcall target="common.make-osgi-bundle">
                        <param name="jar" value="${result.jar}" />
+                       <param name="bundle-version" value="${vaadin.version}" />
+                       <param name="bundle-name" value="${module.name}" />
+                       <param name="bundle-symbolic" value="${module.symbolic}" />
+                       <param name="bundle-vendor" value="${vaadin.vendor}" />
                </antcall>
 
        </target>
 
-       <target name="generate-osgi-exports">
+       <!-- Add OSGi attributes to the manifest of the given jar -->
+       <target name="make-osgi-bundle">
                <fail unless="jar" message="No jar parameter given" />
+               <fail unless="bundle-name" message="No bundle-name parameter given" />
+               <fail unless="bundle-symbolic" message="No bundle-symbolic parameter given" />
+               <fail unless="bundle-version" message="No bundle-version parameter given" />
+               <fail unless="bundle-vendor" message="No bundle-vendor parameter given" />
+
+               <property name="bundle-manifestversion" value="2" />
 
-               <!-- Generate the Export-Package attribute in the manifest of the 
-            JAR -->
+               <jar file="${jar}" update="true">
+                       <manifest>
+                               <attribute name="Bundle-Version" value="${bundle-version}" />
+                               <attribute name="Bundle-ManifestVersion" value="${bundle-manifestversion}" />
+                               <attribute name="Bundle-Name" value="${bundle-name}" />
+                               <attribute name="Bundle-SymbolicName" value="${bundle-symbolic}" />
+                               <attribute name="Bundle-Vendor" value="${bundle-vendor}" />
+                               <attribute name="Bundle-RequiredExecutionEnvironment" value="JavaSE-${vaadin.java.version}" />
+                       </manifest>
+               </jar>
+
+               <antcontrib:if>
+                       <isset property="import-package" />
+                       <then>
+                               <jar file="${result.jar}" update="true">
+                                       <manifest>
+                                               <attribute name="Import-Package" value="${import-package}" />
+                                       </manifest>
+                               </jar>
+                       </then>
+               </antcontrib:if>
+               <antcontrib:if>
+                       <isset property="export-package" />
+                       <then>
+                               <jar file="${result.jar}" update="true">
+                                       <manifest>
+                                               <attribute name="Export-Package" value="${export-package}" />
+                                       </manifest>
+                               </jar>
+                       </then>
+               </antcontrib:if>
+
+               <!-- Generate the Export-Package attribute in the manifest -->
                <java classname="com.vaadin.buildhelpers.GeneratePackageExports" failonerror="true" fork="yes">
                        <arg value="${jar}" />
                        <arg value="com/vaadin" />
                        <arg value="com/google" />
-                       
                        <classpath refid="vaadin.buildhelpers.classpath" />
                </java>
        </target>
 
-       <target name="compile" description="Compiles the module" depends="dependencies">
+       <target name="compile" description="Compiles the module" depends="dependencies, directories" if="src-exists">
                <fail unless="module.name" message="No module name given" />
-               <property name="result.dir" location="result" />
-               <property name="src" location="${result.dir}/../src" />
-               <property name="classes" location="${result.dir}/classes" />
-
-               <mkdir dir="${classes}" />
 
                <javac srcdir="${src}" destdir="${classes}" source="${vaadin.java.version}" target="${vaadin.java.version}" debug="true" encoding="UTF-8" includeantruntime="false">
                        <classpath refid="classpath.compile.dependencies" />
                </javac>
        </target>
 
+       <target name="directories">
+               <property name="result.dir" location="result" />
+               <property name="src" location="${result.dir}/../src" />
+               <property name="classes" location="${result.dir}/classes" />
+               <available file="${src}" type="dir" property="src-exists" />
+               <mkdir dir="${classes}" />
+       </target>
+
        <target name="tests.run" depends="tests.compile">
                <fail unless="module.name" message="No module name given" />
 
        </target>
 
        <target name="dependencies" description="Resolves dependencies needed by this module" depends="filter.webcontent">
-               <ivy:resolve resolveid="common" conf="build, build-provided" />
-               <ivy:cachepath pathid="classpath.compile.dependencies" conf="build, build-provided" />
+               <property name='conf' value="build, build-provided" />
+               <ivy:resolve resolveid="common" conf="${conf}" />
+               <ivy:cachepath pathid="classpath.compile.dependencies" conf="${conf}" />
        </target>
 
        <target name="dependencies.tests" description="Resolves dependencies needed by tests">