Praise be to Ivy, which lets me do what I need without tremendous amounts of
hair-pulling and ball-ache. We now have Maven call out to an Ivy-based Ant task to do the Proguard build (with Ivy maintaining a parallel copy of the dependencies, unfortunately). It's a twisty maze of passages, but it gets the Proguard build done during the right Maven phase so that all of its magical building, version number changing, SVN commits, etc. can happen as usual during the publishing process.
This commit is contained in:
+32
-74
@@ -1,7 +1,6 @@
|
||||
<?xml version="1.0"?>
|
||||
<project xmlns:ivy="antlib:org.apache.ivy.ant" name="getdown" default="compile" basedir=".">
|
||||
<project xmlns:ivy="antlib:org.apache.ivy.ant" name="getdown" basedir=".">
|
||||
<property name="app.name" value="getdown"/>
|
||||
<property name="revision" value="1.0"/>
|
||||
|
||||
<!-- downloads ivy if necessary and sets everything up -->
|
||||
<property name="ivy.vers" value="2.1.0-rc2" />
|
||||
@@ -19,84 +18,43 @@
|
||||
<ivy:cachepath pathid="compile.classpath" conf="compile" log="download-only"/>
|
||||
</target>
|
||||
|
||||
<target name="check-ivy" depends="-init-ivy" description="Computes and prints Ivy classpath.">
|
||||
<pathconvert pathsep="${line.separator} " property="compile.str" refid="compile.classpath"/>
|
||||
<echo>Compile classpath:</echo>
|
||||
<echo> ${compile.str}</echo>
|
||||
</target>
|
||||
|
||||
<target name="proguard" depends="-init-ivy">
|
||||
<!-- we need ant-contrib for if -->
|
||||
<!--
|
||||
<taskdef resource="net/sf/antcontrib/antlib.xml">
|
||||
<classpath>
|
||||
<pathelement location="${deploy.dir}/lib/ant-contrib.jar"/>
|
||||
</classpath>
|
||||
</taskdef>
|
||||
-->
|
||||
|
||||
<!-- figure out where the Java rt.jar file lives -->
|
||||
<!--
|
||||
<if><and><os family="mac"/><os family="unix"/></and><then>
|
||||
<property name="rtClasses" value="${java.home}/../Classes/classes.jar"/>
|
||||
</then><else>
|
||||
<property name="rtClasses" value="${java.home}/lib/rt.jar"/>
|
||||
</else></if>
|
||||
-->
|
||||
<!-- Ivy is awesome and will fill the location of all of our dependencies into properties -->
|
||||
<property name="cache.dir" value="${user.home}/.ivy2/cache"/>
|
||||
<ivy:artifactproperty
|
||||
name="[artifact]"
|
||||
value="${cache.dir}/[organization]/[module]/[type]s/[artifact]-[revision].[ext]"/>
|
||||
|
||||
<!-- fucking Proguard, fucking Mac OS X -->
|
||||
<mkdir dir="target"/>
|
||||
<copy file="${java.home}/../Classes/classes.jar" tofile="target/runtime.jar"
|
||||
failonerror="false"/>
|
||||
<copy file="${java.home}/lib/rt.jar" tofile="target/runtime.jar" failonerror="false"/>
|
||||
|
||||
<taskdef resource="proguard/ant/task.properties" classpathref="compile.classpath"/>
|
||||
<taskdef resource="proguard/ant/task.properties" classpath="${proguard}"/>
|
||||
<proguard>
|
||||
-injars dist/getdown.jar(!**/tools/**)
|
||||
-injars dist/getdown.jar(**/tools/*Patcher*,**/tools/Differ*)
|
||||
-injars dist/lib/jRegistryKey.jar(!META-INF/*)
|
||||
-injars dist/lib/samskivert.jar(
|
||||
com/samskivert/Log.class,**/io/**,**/swing/**,**/net/**,**/text/**,**/util/**)
|
||||
-injars dist/lib/commons-codec.jar(!META-INF/*)
|
||||
|
||||
-dontskipnonpubliclibraryclasses
|
||||
|
||||
-outjars target/getdown-pro.jar
|
||||
|
||||
-keep public class ca.beq.util.win32.registry.** {
|
||||
*;
|
||||
}
|
||||
|
||||
-keep public class com.threerings.getdown.launcher.Getdown {
|
||||
public static void main (java.lang.String[]);
|
||||
}
|
||||
|
||||
-keep public class com.threerings.getdown.launcher.GetdownApp {
|
||||
public static void main (java.lang.String[]);
|
||||
}
|
||||
|
||||
-keep public class com.threerings.getdown.launcher.GetdownApplet {
|
||||
*;
|
||||
}
|
||||
|
||||
-keep class * extends javax.swing.JApplet {
|
||||
<methods>;
|
||||
}
|
||||
|
||||
-keep public class com.threerings.getdown.launcher.GetdownAppletConfig {
|
||||
*;
|
||||
}
|
||||
<injar path="target/getdown-${maven.version}.jar" filter="!**/tools/DigesterTask*"/>
|
||||
<injar path="lib/jRegistryKey.jar" filter="!META-INF/**"/>
|
||||
<injar path="${samskivert}" filter="!META-INF/**,!**/Log4JLogger*,
|
||||
!**/*.java,com/samskivert/Log.class,**/samskivert/io/**,**/samskivert/swing/**,
|
||||
**/samskivert/text/**,**/samskivert/util/**"/>
|
||||
<injar path="${commons-codec}" filter="!META-INF/**"/>
|
||||
<outjar path="target/getdown-pro-${maven.version}.jar"/>
|
||||
<libraryjar name="target/runtime.jar"/>
|
||||
<keep name="ca.beq.util.win32.registry.**"/>
|
||||
<keep name="com.threerings.getdown.launcher.Getdown">
|
||||
<method access="static" name="main"/>
|
||||
</keep>
|
||||
<keep name="com.threerings.getdown.launcher.GetdownApp">
|
||||
<method access="static" name="main"/>
|
||||
</keep>
|
||||
<keep name="com.threerings.getdown.launcher.GetdownApplet"/>
|
||||
<keep name="*" extends="javax.swing.JApplet">
|
||||
<method name="*"/>
|
||||
</keep>
|
||||
<keep name="com.threerings.getdown.launcher.GetdownAppletConfig"/>
|
||||
</proguard>
|
||||
|
||||
<!--
|
||||
<taskdef name="weave" classname="com.rc.retroweaver.ant.RetroWeaverTask"
|
||||
classpath="${deploy.dir}/lib/retroweaver-all-1.2.2.jar"/>
|
||||
<weave inputjar="${basedir}/${deploy.dir}/${app.name}-pro.jar"
|
||||
outputjar="${basedir}/${deploy.dir}/${app.name}-retro-pro.jar"/>
|
||||
-->
|
||||
<!-- now combine the retroweaved jar file with the retroweaver runtime -->
|
||||
<!--
|
||||
<unjar src="${deploy.dir}/lib/retroweaver-rt-1.2.2.jar"
|
||||
dest="${deploy.dir}/rptmp"/>
|
||||
<jar destfile="${deploy.dir}/${app.name}-retro-pro.jar"
|
||||
manifest="lib/manifest.mf" basedir="${deploy.dir}/rptmp" update="true"/>
|
||||
<delete dir="${deploy.dir}/rptmp"/>
|
||||
-->
|
||||
<delete file="target/runtime.jar"/>
|
||||
</target>
|
||||
</project>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ivy-module version="2.0" xmlns:mvn="http://ant.apache.org/ivy/maven">
|
||||
<info organisation="com.threerings" module="getdown" revision="${revision}">
|
||||
<info organisation="com.threerings" module="getdown" revision="1.0">
|
||||
<description homepage="http://code.google.com/p/getdown"/>
|
||||
</info>
|
||||
<configurations>
|
||||
@@ -14,17 +14,10 @@
|
||||
<conf name="compile" visibility="private" extends="runtime,provided,optional"/>
|
||||
<conf name="test" visibility="private" extends="compile"/>
|
||||
</configurations>
|
||||
<publications>
|
||||
<artifact type="jar"/>
|
||||
<artifact type="source" ext="jar" mvn:classifier="sources"/>
|
||||
<artifact type="javadoc" ext="jar" mvn:classifier="javadoc"/>
|
||||
</publications>
|
||||
<dependencies>
|
||||
<dependency org="net.sf.proguard" name="proguard" rev="4.4" conf="compile->master(*)"/>
|
||||
<dependency org="com.samskivert" name="samskivert" rev="1.0" conf="compile->master(*)"/>
|
||||
<dependency org="commons-codec" name="commons-codec" rev="1.4" conf="compile->master(*)"/>
|
||||
<dependency org="log4j" name="log4j" rev="1.2.15" conf="compile->master(*)"/>
|
||||
<dependency org="net.sourceforge.retroweaver" name="retroweaver" rev="2.0.7" conf="compile->master(*)"/>
|
||||
<dependency org="org.apache.ant" name="ant" rev="1.7.1" conf="compile->master(*)"/>
|
||||
</dependencies>
|
||||
</ivy-module>
|
||||
|
||||
@@ -41,21 +41,6 @@
|
||||
</scm>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>log4j</groupId>
|
||||
<artifactId>log4j</artifactId>
|
||||
<version>1.2.15</version>
|
||||
<scope>compile</scope>
|
||||
<optional>true</optional>
|
||||
<exclusions>
|
||||
<exclusion><groupId>javax.mail</groupId><artifactId>mail</artifactId></exclusion>
|
||||
<exclusion><groupId>javax.jms</groupId><artifactId>jms</artifactId></exclusion>
|
||||
<exclusion><groupId>com.sun.jdmk</groupId><artifactId>jmxtools</artifactId></exclusion>
|
||||
<exclusion><groupId>com.sun.jmx</groupId><artifactId>jmxri</artifactId></exclusion>
|
||||
<exclusion><groupId>oro</groupId><artifactId>oro</artifactId></exclusion>
|
||||
<exclusion><groupId>junit</groupId><artifactId>junit</artifactId></exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.sf.proguard</groupId>
|
||||
<artifactId>proguard</artifactId>
|
||||
@@ -77,13 +62,6 @@
|
||||
<scope>compile</scope>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.sourceforge.retroweaver</groupId>
|
||||
<artifactId>retroweaver</artifactId>
|
||||
<version>2.0.7</version>
|
||||
<scope>compile</scope>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.ant</groupId>
|
||||
<artifactId>ant</artifactId>
|
||||
@@ -146,6 +124,40 @@
|
||||
</links>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-antrun-plugin</artifactId>
|
||||
<version>RELEASE</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>package</id>
|
||||
<phase>package</phase>
|
||||
<configuration>
|
||||
<target>
|
||||
<property name="maven.version" value="${project.version}"/>
|
||||
<ant antfile="${basedir}/build-ivy.xml">
|
||||
<target name="proguard"/>
|
||||
</ant>
|
||||
</target>
|
||||
</configuration>
|
||||
<goals>
|
||||
<goal>run</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<version>RELEASE</version>
|
||||
<configuration>
|
||||
<archive>
|
||||
<manifest>
|
||||
<mainClass>com.threerings.getdown.launcher.Getdown</mainClass>
|
||||
</manifest>
|
||||
</archive>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-gpg-plugin</artifactId>
|
||||
|
||||
Reference in New Issue
Block a user