java - 如何通过 Ant 将一个 jar 文件包含另一个 jar?

标签 java ant build jar

我有“test.jar”。我想创建 'my.jar' 。我想要 my.jar 包含 test.jar

我的代码:

<target name="jar" >
  <copy file="${conf.dir}/default.xml" todir="${build.classes}" />
  <jar jarfile="${build.dir}/test.jar" basedir="${build.classes}">
   <manifest>
   </manifest>
  </jar>
 </target>

 <target name="services-jar">
    <jar jarfile="${build.dir}/my.jar">
        <manifest>
            <attribute name="Main-Class" value="mypackage.MyClass" />
            <attribute name="Class-Path" value="${build.dir}/test.jar" />
        </manifest>
    </jar>
</target>

如果我运行“my.jar”:java -jar my.jar 显示消息:无法找到或加载主类 mypackage.MyClass

我的MANIFEST.MF文件:

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.4
Created-By: 1.7.0_17-b02 (Oracle Corporation)
Main-Class: mypackage.MyClass
Class-Path: ./build/test.jar

有什么想法吗?

最佳答案

list 中的路径 Class-Path需要相对于包含 list 的 JAR 文件的位置。由于两者 my.jartest.jar位于同一目录( ${build.dir} ),相对路径只是 test.jar ,即你需要

<jar jarfile="${build.dir}/my.jar">
    <manifest>
        <attribute name="Main-Class" value="mypackage.MyClass" />
        <attribute name="Class-Path" value="test.jar" />
    </manifest>
</jar>

更一般地说,您可能希望查找 <manifestclasspath>任务,给定目标 JAR 文件的位置以及您想要放在 Class-Path 上的一组其他 JAR。 ,为您计算所有相对路径并为 list 属性生成正确的值。

关于java - 如何通过 Ant 将一个 jar 文件包含另一个 jar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16439109/

相关文章:

ember.js - 如何使用 Ember CLI 进行生产就绪构建?

java - JScrollPane 不显示 JSplitPane 内的滚动条

java - XSLT <xsl :element> equivalent in JSP?

java - mysql 的 Ant 构建失败

java - 在 Ant JUnit 测试运行中仅运行类型的子类

.net - 在每次构建时在构建机器中执行集成测试或只是单元测试是正常的吗?

java - 以两位数格式显示日期 - java

java - 为什么mockito在 stub 时调用父方法

java - maven-antrun-plugin 出现 "Plugin execution not covered by lifecycle configuration"错误

Maven插件管理配置继承奇怪行为