Java 带Jar目标的蚂蚁
我需要帮助,了解ant的罐子包装问题。下面是我的简单代码:Java 带Jar目标的蚂蚁,java,module,jar,ant,Java,Module,Jar,Ant,我需要帮助,了解ant的罐子包装问题。下面是我的简单代码: <target name="build" depends="compile,test"> <jar basedir="${bin}/swing.gui" destfile="${mod}/swing.gui.jar"> <manifest> <attribute name="Main-Class" value="swing
<target name="build" depends="compile,test">
<jar
basedir="${bin}/swing.gui"
destfile="${mod}/swing.gui.jar">
<manifest>
<attribute name="Main-Class" value="swing.main.Main"/>
</manifest>
</jar>
</target>
它不起作用。错误消息说没有MainClass属性,我应该尝试使用-m/来代替。
当我在控制台上执行这一行时:
jar --create --file=bin/mod/swing.gui.jar --main-class=swing.main.Main -C bin/src/swing.gui .
它只是工作!这是ant中的一个bug吗?完全不是bug。蚂蚁只是在做你让它做的事
Main类
manifest属性不被模块加载程序使用。jar
的--main class
选项与清单无关;它在jar的module-info.class条目上设置一个二进制类属性
因此,Ant构建文件所做的与jar
命令所做的完全不同
在Ant的任务直接支持这一点之前,解决方法是直接调用JDK的jar
命令。大概是这样的:
<condition property="exec-suffix" value=".exe" else="">
<os family="windows"/>
</condition>
<property name="jar.tool"
location="${java.home}/bin/jar${exec-suffix}"/>
<exec executable="${jar.tool}" failonerror="true">
<arg value="-u"/>
<arg value="-f"/>
<arg file="${mod}/swing.gui.jar"/>
<arg value="-e"/>
<arg value="swing.main.Main"/>
</exec>
好的,我明白了。顺便说一句,我也做了变通。但是有了主类选项,它就可以工作了!非常感谢你的帮助。
<condition property="exec-suffix" value=".exe" else="">
<os family="windows"/>
</condition>
<property name="jar.tool"
location="${java.home}/bin/jar${exec-suffix}"/>
<exec executable="${jar.tool}" failonerror="true">
<arg value="-u"/>
<arg value="-f"/>
<arg file="${mod}/swing.gui.jar"/>
<arg value="-e"/>
<arg value="swing.main.Main"/>
</exec>