Maven antrun的故事

Posted by CaiJiahe on November 8, 2017

0x01 java target

问题:

老项目使用ant编译,生成协议文件的jar包不依赖其他jar包。所以使用的是java -jar jar_location,main class写在MANIFEST中。

<java jar="jar_location" fork="yes">
	<arg value="xmlgen" />
	<arg value="-java" />
</java>

这么写是OK的,但是在修改了这个jar包,增加一些依赖后,蛋疼的事发生了,每次运行都会报ClassNoDef的异常。

解决办法

类似于java -cp:xxx main_class_name

<java classname="main_class_location" fork="yes">
	<classpath>
		<pathelement location="${jar_location}"/>
		<pathelement location="${dep_location}"/>
	</classpath>
	<arg value="xmlgen" />
	<arg value="-java" />
</java>

0x02 Referencing the Maven Classpaths

Note: the old format "maven.dependency.groupId.artifactId[.classifier].type.path" has been deprecated and should no longer be used.

现在的格式是

groupId:artifactId:type[:classifier]