![](/icons/26000dou.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000dou2.gif)
![](/icons/26000yi.gif)
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000dou2.gif)
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000dou.gif)
![](/icons/26000dou2.gif)
但是maven在依赖管理方面实在是太强大了
![](/icons/26000dou.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000yi.gif)
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000yi.gif)
![](/icons/26000dou2.gif)
然而ant
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000yi.gif)
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000dou2.gif)
![](/icons/26000dou.gif)
![](/icons/26000dou2.gif)
![](/icons/26000yi.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000dou2.gif)
先交代
![](/icons/26000yi.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000chengxu.gif)
![](/icons/26000dou.gif)
demo1
|____lib
|_____demo1.jar
|_____*****.jar
|_____*****.jar
|____config
|_____*****.properties
|_____*****.xml
|____log
|_____*****.log
|____run.bat
|____run.sh
这个应用
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000yi.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000de.gif)
![](/icons/26000dou2.gif)
![](/icons/26000dou.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000dou2.gif)
![](/icons/26000dou2.gif)
![](/icons/26000de.gif)
![](/icons/26000yi.gif)
![](/icons/26000dou2.gif)
遇到
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000dou.gif)
![](/icons/26000dou.gif)
![](/icons/26000dou2.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000main.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000dou.gif)
本着尽量只用maven不用ant
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000dou2.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000dou.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000de.gif)
几经寻觅和探索
![](/icons/26000dou.gif)
![](/icons/26000dou.gif)
![](/icons/26000yi.gif)
![](/icons/26000de.gif)
![](/icons/26000dou2.gif)
![](/icons/26000de.gif)
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000dou.gif)
![](/icons/26000dou2.gif)
![](/icons/26000dou2.gif)
首先建立java项目anttaskdemo1
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
anttaskdemo1
|____src/
/java
|____src/
/config
|____src/
/bin
|____src/
/resources
|____src/test/java
|____src/test/resources
|____target
|____build.properties
|____build.xml
|____pom.xml
其中src/
![](/icons/26000main.gif)
![](/icons/26000main.gif)
![](/icons/26000yi.gif)
![](/icons/26000dou.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000dou2.gif)
![](/icons/26000main.gif)
![](/icons/26000yi.gif)
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000de.gif)
![](/icons/26000dou2.gif)
![](/icons/26000main.gif)
![](/icons/26000dou2.gif)
1. 首先看pom.xml
![](/icons/26000dou.gif)
![](/icons/26000dou.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
<dependency>
<groupId>commons-codec</groupId>
<art
actId>commons-codec</art
actId>
<version>1.3</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<art
actId>log4j</art
actId>
<version>1.2.13</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<art
actId>testng</art
actId>
<version>5.8</version>
<scope>test</scope>
<![](/icons/26000class.gif)
ier>jdk15</![](/icons/26000class.gif)
ier>
</dependency>
其中commons-codec
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000dou2.gif)
![](/icons/26000yi.gif)
![](/icons/26000de.gif)
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000dou2.gif)
![](/icons/26000de.gif)
![](/icons/26000dou2.gif)
2. 然后看看build.properties文件
![](/icons/26000dou.gif)
M2_REPO=G:/soft/maven/localRepository
path.package=package
path.target.name=anttaskdemo1
path.package.lib=lib
path.package.log=log
path.package.config=config
path.package.bin=
M2_REPO稍后再详谈
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000de.gif)
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000dou2.gif)
3. build.xml
![](/icons/26000dou.gif)
![](/icons/26000dou2.gif)
<?xmlversion="1.0"encoding="UTF-8"?>
<projectname="demo"default="all"xmlns:art
act="urn:maven-art
act-ant">
<description>
</description>
<propertyfile="build.properties"/>
<targetname="init_maven">
<!--
rememberto
M2_REPObeforeu
hisbuild.xml,forexampleineclispe:
"Window→Preferences→Ant→Runtime",adda
propertynamed"M2_REPO"and
itvaluepo
tothepathofyourmaven
localrepository;Oryoucan
itinbuild.properties. Youneeddoone(andonlyone)ofthem.
-->
<pathid="maven-ant-tasks.
path"path="${M2_REPO}/org/apache/maven/maven-ant-tasks/2.0.9/maven-ant-tasks-2.0.9.jar"/>
<typedefresource="org/apache/maven/art
act/ant/antlib.xml"uri="urn:maven-art
act-ant"
pathref="maven-ant-tasks.
path"/>
<art
act:pomid="maven.project"file="pom.xml"/>
<art
act:dependenciespathId="
path.build"file
id="maven.file
.build">
<pomrefid="maven.project"/>
</art
act:dependencies>
<art
act:dependenciespathId="
path.runtime"file
id="maven.file
.runtime"useScope="runtime">
<pomrefid="maven.project"/>
</art
act:dependencies>
</target>
<targetname="all"depends="init_path,compile,jar,package,zip"description="doall">
<echo>beg
odoalltargettobuildtheresultpackage.</echo>
</target>
<targetname="maven_info"depends="init_maven">
<echo>Mavenbuilddirectoryis${maven.project.build.directory}</echo>
<echo>MavenbuildfinalNameis${maven.project.build.finalName}</echo>
<echo>MavenbuildsourceDirectorydirectoryis${maven.project.build.sourceDirectory}</echo>
<echo>MavenbuildoutputDirectorydirectoryis${maven.project.build.outputDirectory}</echo>
<echo>MavenbuildscriptSourceDirectorydirectoryis${maven.project.build.testSourceDirectory}</echo>
<echo>MavenbuildtestOutputDirectorydirectoryis${maven.project.build.testOutputDirectory}</echo>
<echo>MavenbuildscriptSourceDirectorydirectoryis${maven.project.build.scriptSourceDirectory}</echo>
<echo>MavenbuildresourceDirectorydirectoryis${maven.project.build.resources}</echo>
<propertyname="target.jar.name"value="${maven.project.build.directory}/${maven.project.build.finalName}.jar"/>
<echo>MavenbuildscriptSourceDirectorydirectoryis${target.jar.name}</echo>
</target>
<targetname="clean"depends="init_maven">
<echo>cleanbuilddirectory:${maven.project.build.directory}</echo>
<deletedir="${maven.project.build.directory}"
s="**/*"/>
</target>
<targetname="init_path"depends="maven_info,clean">
<echo>makedirforjavacompile:${maven.project.build.outputDirectory}</echo>
<mkdirdir="${maven.project.build.outputDirectory}"/>
</target>
<targetname="compile"description="description"depends="init_maven">
<javacsrcdir="${maven.project.build.sourceDirectory}"destdir="${maven.project.build.outputDirectory}"
pathref="
path.build"/>
</target>
<targetname="copyResource"depends="init_maven">
<copytodir="${maven.project.build.outputDirectory}">
<file
dir="src/
/resources">
</file
>
</copy>
</target>
<targetname="jar"depends="compile,copyResource">
<deletefile="${maven.project.build.directory}/${maven.project.build.finalName}.jar" failonerror="false"/>
<jardestfile="${maven.project.build.directory}/${maven.project.build.finalName}.jar"basedir="${maven.project.build.outputDirectory}">
</jar>
</target>
<targetname="package"depends="package_prepare,copyLib,copyConfig,copyBin">
</target>
<targetname="package_prepare"depends="init_maven">
<echo>cleanpackagedirectory:${maven.project.build.directory}/${path.package}</echo>
<deletedir="${maven.project.build.directory}/${path.package}"/>
<mkdirdir="${maven.project.build.directory}/${path.package}"/>
<mkdirdir="${maven.project.build.directory}/${path.package}/${path.target.name}"/>
<mkdirdir="${maven.project.build.directory}/${path.package}/${path.target.name}/${path.package.lib}"/>
<mkdirdir="${maven.project.build.directory}/${path.package}/${path.target.name}/${path.package.config}"/>
<mkdirdir="${maven.project.build.directory}/${path.package}/${path.target.name}/${path.package.log}"/>
</target>
<targetname="copyLib"depends="init_maven">
<copytodir="${maven.project.build.directory}/${path.package}/${path.target.name}/${path.package.lib}">
<file
refid="maven.file
.runtime"/>
<mappertype="flatten"/>
</copy>
<copytodir="${maven.project.build.directory}/${path.package}/${path.target.name}/${path.package.lib}"
file="${maven.project.build.directory}/${maven.project.build.finalName}.jar">
</copy>
</target>
<targetname="copyConfig"depends="init_maven">
<copytodir="${maven.project.build.directory}/${path.package}/${path.target.name}/${path.package.config}">
<file
dir="src/
/config">
</file
>
</copy>
</target>
<targetname="copyBin"depends="init_maven">
<copytodir="${maven.project.build.directory}/${path.package}/${path.target.name}/${path.package.bin}">
<file
dir="src/
/bin">
</file
>
</copy>
</target>
<targetname="zip"depends="init_maven">
<zipdestfile="${maven.project.build.directory}/${path.package}/${path.target.name}.zip">
<file
dir="${maven.project.build.directory}/${path.package}/${path.target.name}"></file
>
</zip>
</target>
</project>
![](/icons/26000yi.gif)
![](/icons/26000yi.gif)
3.1 最重要
![](/icons/26000de.gif)
![](/icons/26000yi.gif)
![](/icons/26000dou.gif)
<targetname="init_maven">
<!--
rememberto
M2_REPObeforeu
hisbuild.xml,forexampleineclispe:
"Window→Preferences→Ant→Runtime",adda
propertynamed"M2_REPO"and
itvaluepo
tothepathofyourmaven
localrepository;Oryoucan
itinbuild.properties. Youneeddoone(andonlyone)ofthem.
-->
<pathid="maven-ant-tasks.
path"path="${M2_REPO}/org/apache/maven/maven-ant-tasks/2.0.9/maven-ant-tasks-2.0.9.jar"/>
<typedefresource="org/apache/maven/art
act/ant/antlib.xml"uri="urn:maven-art
act-ant"
pathref="maven-ant-tasks.
path"/>
<art
act:pomid="maven.project"file="pom.xml"/>
<art
act:dependenciespathId="
path.build"file
id="maven.file
.build">
<pomrefid="maven.project"/>
</art
act:dependencies>
<art
act:dependenciespathId="
path.runtime"file
id="maven.file
.runtime"useScope="runtime">
<pomrefid="maven.project"/>
</art
act:dependencies>
</target>
在ant中使用maven-ant-tasks
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000dou.gif)
![](/icons/26000yi.gif)
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000dou2.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
<pathid="maven-ant-tasks.
path"path="${M2_REPO}/org/apache/maven/maven-ant-tasks/2.0.9/maven-ant-tasks-2.0.9.jar"/>
<typedefresource="org/apache/maven/art
act/ant/antlib.xml"uri="urn:maven-art
act-ant"
pathref="maven-ant-tasks.
path"/>
这样就可以在后面使用maven-ant-tasks
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000if.gif)
![](/icons/26000dou.gif)
![](/icons/26000if.gif)
![](/icons/26000dou2.gif)
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000dou.gif)
![](/icons/26000yi.gif)
![](/icons/26000dou2.gif)
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000dou2.gif)
![](/icons/26000yi.gif)
![](/icons/26000dou.gif)
http://mvnrepository.com/art
![](/icons/26000if.gif)
pom内容如下:
<dependency>
<groupId>org.apache.maven</groupId>
<art
actId>maven-ant-tasks</art
actId>
<version>2.0.9</version>
</dependency>
将这个内容随便找个空项目
![](/icons/26000dou.gif)
![](/icons/26000yi.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000de.gif)
![](/icons/26000dou2.gif)
![](/icons/26000dou2.gif)
${M2_REPO}
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000dou2.gif)
![](/icons/26000dou2.gif)
![](/icons/26000dou.gif)
![](/icons/26000dou.gif)
![](/icons/26000dou2.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000dou2.gif)
![](/icons/26000de.gif)
![](/icons/26000yi.gif)
![](/icons/26000dou.gif)
![](/icons/26000yi.gif)
![](/icons/26000dou.gif)
![](/icons/26000yi.gif)
![](/icons/26000dou.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000dou.gif)
![](/icons/26000dou2.gif)
装载ok后
![](/icons/26000dou.gif)
![](/icons/26000diaoyong.gif)
![](/icons/26000if.gif)
![](/icons/26000if.gif)
![](/icons/26000dou.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000dou2.gif)
![](/icons/26000dou.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000dou2.gif)
<target name="maven_info" />是用来打印maven相关
![](/icons/26000de.gif)
![](/icons/26000yi.gif)
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000dou2.gif)
![](/icons/26000if.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000dou2.gif)
pom
![](/icons/26000de.gif)
1) maven model
http://maven.apache.org/ref/2.0.9/maven-model/maven.html
2) Introduction to the POM
http://maven.apache.org/guides/
![](/icons/26000int.gif)
![](/icons/26000int.gif)
标准目录布局可以参考这个官方资料:
http://maven.apache.org/guides/
![](/icons/26000int.gif)
![](/icons/26000int.gif)
3.2 compile
这里是maven ant task
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
<targetname="compile"description="description"depends="init_maven">
<javacsrcdir="${maven.project.build.sourceDirectory}"destdir="${maven.project.build.outputDirectory}"
pathref="
path.build"/>
</target>
结合的前maven
![](/icons/26000chushi.gif)
![](/icons/26000de.gif)
<art
act:pomid="maven.project"file="pom.xml"/>
<art
act:dependenciespathId="
path.build"file
id="maven.file
.build">
<pomrefid="maven.project"/>
</art
act:dependencies>
可以看到
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000class.gif)
![](/icons/26000dou.gif)
![](/icons/26000dou2.gif)
target copyResource 完成了将resource copy到outputDirectory
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000class.gif)
![](/icons/26000dou2.gif)
注: 这个有个问题
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
<resources>
<resource>
<directory>src/
/resources</directory>
</resource>
</resources>
我试过用${maven.project.build.resources[0];${maven.project.build.resources(0), ${maven.project.build.resources.0,${maven.project.build.resources.resource
等都无效
![](/icons/26000dou2.gif)
![](/icons/26000dou.gif)
![](/icons/26000dou2.gif)
![](/icons/26000main.gif)
![](/icons/26000dou2.gif)
3.3 jar
和compile类似
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000dou2.gif)
![](/icons/26000de.gif)
![](/icons/26000de.gif)
![](/icons/26000yi.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000yi.gif)
![](/icons/26000de.gif)
![](/icons/26000dou2.gif)
<targetname="jar"depends="compile,copyResource">
<deletefile="${maven.project.build.directory}/${maven.project.build.finalName}.jar" failonerror="false"/>
<jardestfile="${maven.project.build.directory}/${maven.project.build.finalName}.jar"basedir="${maven.project.build.outputDirectory}">
</jar>
</target>
3.4 package
![](/icons/26000dou.gif)
package_prepare, copyLib, copyConfig, copyBin 这几个target都简单
![](/icons/26000dou.gif)
![](/icons/26000dou2.gif)
![](/icons/26000dou2.gif)
4. 整理总结
上面
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
1. maven ant task可以将maven
![](/icons/26000de.gif)
![](/icons/26000de.gif)
![](/icons/26000yi.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
2. maven ant task
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
![](/icons/26000dou.gif)
![](/icons/26000dou.gif)
![](/icons/26000dou2.gif)
另外
![](/icons/26000dou.gif)
![](/icons/26000dou.gif)
![](/icons/26000de.gif)
相关文章:
初学maven(1)-常见小问题集锦
初学maven(2)-maven/art
![](/icons/26000if.gif)
初学maven(3)-使用nexus替代art
![](/icons/26000if.gif)
初学maven(4)-使用maven ant task实现非标准打包
初学maven(5)-使用assembly plugin实现自定义打包
最新评论