I'm working on my first major M2 (v. 2.0.4) project in my spare cycles, and
my obfuscation step was working fine last week. Now it's failing with a
"can't find ant task" error, which seems like a classpath/dependency issue.
I've tried everything I could think of, I'm hoping someone can point out my
problem. It's possible I changed something by accident, but I can't see it.
Does anyone a problem with this setup?
Here's my code in the pom.xml:
<!-- Obfuscation -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>obfuscate-classes</id>
<phase>process-classes</phase>
<configuration>
<tasks>
<echo>Obfuscating...</echo>
<ant antfile="${basedir}/klassmaster.build.xml"
inheritRefs="true">
<target name="obfuscate"/>
</ant>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>com.zelix</groupId>
<artifactId>klassmaster</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>C:/build-sandbox/d2e-vision/d2e-vision-engine/klassmaster/ZKM.ja
r</systemPath>
</dependency>
</dependencies>
</plugin>
Notice that I'm using the systemPath setting for now. I did have it working
this way without issues.
I have verified that my ZKM.jar is there, and it contains the Ant task
ZKMTask.class (there is no package prefix)
My klassmaster.build.xml looks like this:
<project basedir="${basedir}">
<taskdef name="ZKM" classname="ZKMTask"/>
<target name="obfuscate">
<!-- ZKM Script System Variables -->
<property name="CLASSES_DIR" value="${basedir}/target/classes"/>
<property name="CLASSPATH" refid="maven.compile.classpath"/>
<property name="obfuscation.output.dir"
value="${basedir}/target/obfuscated-classes/"/>
<mkdir dir="${obfuscation.output.dir}"/>
<!-- Attributes correspond to Zelix KlassMaster command line options.
scriptFileName
is only mandatory attribute -->
<ZKM scriptFileName="${basedir}/klassmaster/script.scr"
logFileName="${basedir}/target/obfuscation/klassmaster-execution.log"
isParseOnly="false"
isVerbose="true"/>
</target>
</project>
The error I get is from a ClassNotFoundException from the AntClassLoader
(taskdef class ZKMTask cannot be found):
<snip from the mvn -X execution.../>
Caused by: The following error occurred while executing this line:
C:\build-sandbox\d2e-vision\d2e-vision-engine\klassmaster.build.xml:3:
taskdef class ZKMTask cannot be found
at
org.apache.tools.ant.ProjectHelper.addLocationToBuildException(ProjectHelper
.java:539)
at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:336)
at
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
at org.apache.tools.ant.Task.perform(Task.java:364)
at org.apache.tools.ant.Target.execute(Target.java:341)
at
org.apache.maven.plugin.antrun.AbstractAntMojo.executeTasks(AbstractAntMojo.
java:108)
... 19 more
Caused by:
C:\build-sandbox\d2e-vision\d2e-vision-engine\klassmaster.build.xml:3:
taskdef class ZKMTask cannot be found
at
org.apache.tools.ant.taskdefs.Definer.addDefinition(Definer.java:483)
at org.apache.tools.ant.taskdefs.Definer.execute(Definer.java:183)
at
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
at org.apache.tools.ant.Task.perform(Task.java:364)
at org.apache.tools.ant.Target.execute(Target.java:341)
at
org.apache.tools.ant.helper.ProjectHelper2.parse(ProjectHelper2.java:142)
at
org.apache.tools.ant.ProjectHelper.configureProject(ProjectHelper.java:91)
at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:334)
... 23 more
Caused by: java.lang.ClassNotFoundException: ZKMTask
at
org.apache.tools.ant.AntClassLoader.findClassInComponents(AntClassLoader.jav
a:1166)
at
org.apache.tools.ant.AntClassLoader.findClass(AntClassLoader.java:1107)
at
org.apache.tools.ant.AntClassLoader.loadClass(AntClassLoader.java:977)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:219)
at
org.apache.tools.ant.taskdefs.Definer.addDefinition(Definer.java:457)
... 30 more