现有项目仅存build.xml无pom.xml:二者能否互换?能否添加依赖?
关于Ant build.xml与Maven pom.xml的差异及依赖添加问题
二者能否互换?
Ant的build.xml和Maven的pom.xml不能直接互换,核心区别在于:
- Ant是过程式构建工具:你得在build.xml里写死构建的每一步操作(比如编译、复制文件、打包Jar),完全手动控制流程。
- Maven是声明式构建工具:你只需要声明项目依赖、基本信息,Maven会自动处理依赖下载、构建流程(编译、测试、打包等),遵循约定好的项目结构。
虽然两者都能完成Java项目的构建,但设计理念和使用方式完全不同,没有直接的转换公式,只能根据需求重新适配。
能不能在这个build.xml里添加依赖?
可以添加,但不能像Maven那样只加一行依赖声明,得手动完成以下步骤:
假设你要添加一个名为new-dependency.jar的依赖:
- 把
new-dependency.jar放到项目的libs目录下(和现有Jar放在一起) - 修改build.xml的两处内容:
- 在
<manifest>的<attribute name="Class-Path">值里,追加9.9_lib/new-dependency.jar(注意和前面的内容用空格分隔) - 在
<copy>任务列表的最后,添加一行:<copy file="${dir.buildfile}/libs/new-dependency.jar" todir="${dir.jarfile}/9.9_lib"/>
- 在
示例修改后的关键片段
<!-- 修改后的Class-Path属性 --> <attribute name="Class-Path" value=". 9.9_lib/activation.jar ... 9.9_lib/new-dependency.jar"/> <!-- 新增的copy任务 --> <copy file="${dir.buildfile}/libs/new-dependency.jar" todir="${dir.jarfile}/9.9_lib"/>
注意事项
这个由Eclipse导出的build.xml功能非常单一,只负责打包可执行Jar,没有依赖自动下载、版本管理的能力。如果你的项目需要频繁添加依赖,更高效的方式是:
- 给Ant集成Ivy工具,实现依赖的自动下载和管理
- 把项目转换成Maven项目,使用pom.xml来管理依赖
你提供的原始build.xml内容:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <project default="create_run_jar" name="Create Runnable Jar for Project PM_DEV with libraries in sub-folder"> <!--this file was created by Eclipse Runnable JAR Export Wizard--> <!--ANT 1.7 is required --> <!--define folder properties--> <property name="dir.buildfile" value="."/> <property name="dir.workspace" value="C:/Users/SENIOR/eclipse-workspace"/> <property name="dir.jarfile" value="C:/Users/SENIOR/Desktop/9.9"/> <target name="create_run_jar"> <jar destfile="${dir.jarfile}/9.9.jar"> <manifest> <attribute name="Main-Class" value="ui.MainMenuFrame"/> <attribute name="Class-Path" value=". 9.9_lib/activation.jar 9.9_lib/apache-mime4j-core-0.8.5.jar 9.9_lib/arial.jar 9.9_lib/commons-beanutils-1.8.2.jar 9.9_lib/commons-digester-2.1.jar 9.9_lib/commons-logging-1.2.jar 9.9_lib/dom4j-1.6.1.jar 9.9_lib/GoodDatePicker-10.3.1.jar 9.9_lib/hamcrest-core-1.3.jar 9.9_lib/itextpdf-5.3.4.jar 9.9_lib/javax.mail-1.6.2.jar 9.9_lib/jcalendar-1.3.3.jar 9.9_lib/jcommon-1.0.23.jar 9.9_lib/jfreechart-1.0.19-experimental.jar 9.9_lib/jfreechart-1.0.19-swt.jar _9.9_lib/jfreechart-1.0.19.jar 9.9_lib/jfreesvg-2.0.jar 9.9_lib/joda-time-2.4-javadoc.jar 9.9_lib/joda-time-2.4-sources.jar 9.9_lib/joda-time-2.4.jar 9.9_lib/junit-4.11.jar 9.9_lib/orsoncharts-1.4-eval-nofx.jar 9.9_lib/orsoncharts-1.5.jar 9.9_lib/orsonpdf-1.6-eval.jar 9.9_lib/orsonpdf-1.7.jar 9.9_lib/poi-3.14.jar 9.9_lib/poi-ooxml-3.14.jar 9.9_lib/poi-ooxml-schemas-3.14.jar 9.9_lib/rs2xml.jar 9.9_lib/servlet.jar 9.9_lib/sqljdbc4.jar 9.9_lib/swingx-1.6.1.jar 9.9_lib/swtgraphics2d.jar 9.9_lib/xmlbeans-2.6.0.jar 9.9_lib/mssql-jdbc-10.2.1.jre8.jar 9.9_lib/sqljdbc42.jar 9.9_lib/AbsoluteLayout.jar 9.9_lib/eclipselink.jar 9.9_lib/javax.persistence_2.1.0.v201304241213.jar 9.9_lib/org.eclipse.persistence.jpa.jpql_2.5.2.v20140319-9ad6abd.jar 9.9_lib/swing-layout-1.0.4.jar 9.9_lib/commons-collections4-4.4.jar 9.9_lib/itext-2.1.7.js8.jar 9.9_lib/jasperreports-6.20.0.jar"/> </manifest> <fileset dir="${dir.buildfile}/build/classes"/> </jar> <delete dir="${dir.jarfile}/9.9_lib"/> <mkdir dir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/activation.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/apache-mime4j-core-0.8.5.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/arial.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/commons-beanutils-1.8.2.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/commons-digester-2.1.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/commons-logging-1.2.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/dom4j-1.6.1.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/GoodDatePicker-10.3.1.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/hamcrest-core-1.3.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/itextpdf-5.3.4.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/javax.mail-1.6.2.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/jcalendar-1.3.3.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/jcommon-1.0.23.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/jfreechart-1.0.19-experimental.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/jfreechart-1.0.19-swt.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/jfreechart-1.0.19.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/jfreesvg-2.0.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/joda-time-2.4-javadoc.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/joda-time-2.4-sources.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/joda-time-2.4.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/junit-4.11.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/orsoncharts-1.4-eval-nofx.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/orsoncharts-1.5.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/orsonpdf-1.6-eval.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/orsonpdf-1.7.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/poi-3.14.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/poi-ooxml-3.14.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/poi-ooxml-schemas-3.14.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/rs2xml.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/servlet.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/sqljdbc4.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/swingx-1.6.1.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/swtgraphics2d.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/xmlbeans-2.6.0.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/mssql-jdbc-10.2.1.jre8.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/sqljdbc42.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/AbsoluteLayout.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/eclipselink.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/javax.persistence_2.1.0.v201304241213.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/org.eclipse.persistence.jpa.jpql_2.5.2.v20140319-9ad6abd.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/swing-layout-1.0.4.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/commons-collections4-4.4.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/itext-2.1.7.js8.jar" todir="${dir.jarfile}/9.9_lib"/> <copy file="${dir.buildfile}/libs/jasperreports-6.20.0.jar" todir="${dir.jarfile}/9.9_lib"/> </target> </project>
内容的提问来源于stack exchange,提问作者ZaneK
相关产品推荐
相关产品推荐

