`
ssxxue
  • 浏览: 5594 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

在ant脚本中使用maven管理的dependency

    博客分类:
  • java
阅读更多
这几天总是有朋友问我如何在ant脚本中引用maven管理的dependency,就在这里写一下,方便查找

maven提供了一些有用的ant-task与ant集成,用于在ant中方便的处理maven管理的artifact,其中包括了dependency管理,POM处理等等。这些task都被打包在maven-ant-tasks-<version>.jar中。

首先,在ant脚本中引入maven的ant task有两种方法,其中之一是把maven-ant-task引入ant中,你需要做的是把maven-ant-tasks-<version>.jar放到ant的lib里,并加入CLASSPATH环境变量(或者在运行ant时使用-lib参数)。使用这种方法时,需要在pom中加入以下namespace声明
<project ... xmlns:artifact="antlib:org.apache.maven.artifact.ant">
  ...
</project>

这种方法平时用的较少,因为你必须为在不同的机器上使用ant task额外的处理maven-ant-tasks-<version>.jar的路径引用

另外一种方法是声明typedef来引入maven ant task,这种方法的最大好处是maven-ant-tasks-<version>.jar的位置可以随意,通常我们会把这个包放在版本控制中,这样team里所有人都能够很方便的拿到并且不需要为不同的机器做额外的配置。

maven 官网给出的例子如下

<project ... xmlns:artifact="urn:maven-artifact-ant">
  ...
  <path id="maven-ant-tasks.classpath" 
        <!-- antlib路径 -->
        path="lib/maven-ant-tasks-2.0.9.jar" />
  <typedef resource="org/apache/maven/artifact/ant/antlib.xml"
           uri="urn:maven-artifact-ant"
           classpathref="maven-ant-tasks.classpath" />
  ...
</project>

注意这种方式的namespace声明与上一种方式的区别

这时候就可以用dependencies task来处理maven管理的dependency了

<artifact:dependencies 
  pathId="dependency.classpath"
  filesetId="dependency.fileset"
  ...
>


之后,在ant脚本中就可以用下面的方式引用项目dependency
  ...
  <fileset refid="dependency.fileset" />
  <classpath refid="dependency.classpath" />
  ...


一个完整的例子:

<project name="testproject" default="" basedir="." xmlns:artifact="urn:maven-artifact-ant">

	<property environment="env" />
	<property name="work.src" value="${basedir}/src/main/java" />
	<property name="work.conf" value="${basedir}/src/main/resources" />
	<property name="work.classes" value="${basedir}/target/classes" />

	<target name="maven-jar" description="Use Maven2 to manage jars' dependencies">
		<typedef resource="org/apache/maven/artifact/ant/antlib.xml" uri="urn:maven-artifact-ant">
			<classpath>
				<pathelement location="lib/maven-ant-tasks-2.0.7.jar" />
			</classpath>
		</typedef>

		<artifact:pom file="pom.xml" id="testproject.pom" />

		<artifact:dependencies pathId="testproject.maven.classpath" filesetId="testproject.fileset" usescope="runtime">
			<pom refid="testproject.pom" />
		</artifact:dependencies>
	</target>
	
	<path id="project.classpath">
		<dirset dir="${work.conf}" />
		<fileset refid="testproject.fileset" />
	</path>

	<target name="compile" depends="maven-jar" description="compiles all source files">
		<javac srcdir="${work.src}" destdir="${work.classes}" classpathref="project.class.path" debug="true">
		</javac>
	</target>

</project>
分享到:
评论
1 楼 China2010pan 2013-01-25  
需要在pom中加入以下namespace声明  应该是在build中吧

相关推荐

    maven-ant-tasks-2.1.3.zip

    在 Ant 脚本中,可以使用 `dependency` 元素来下载指定的 Maven 依赖,并将其添加到项目的 classpath 中。以下是一个简单的示例: ```xml &lt;dependency pomFile="pom.xml" pathId="maven.class.path" filesetId=...

    ant 脚本从svn上取代码打包代码全,同时包括相关的jar包

    在实际项目中,可能会有更复杂的依赖管理,比如使用`ivy`或`maven`来管理外部库,或者通过`dependency`任务直接从远程仓库下载jar包。此外,还可能需要执行测试、生成文档、部署等额外步骤。 至于如何处理子文件夹...

    java-maven-apache-ant-zip-2.3-jar包依赖

    在Java开发中,Maven和Apache Ant是两种广泛使用的构建工具,它们帮助开发者管理和构建项目。本文将深入探讨`com.ckfinder:apache-ant-zip:jar:2.3`这个特定的依赖,以及它在Maven和Ant中的作用。 首先,`...

    Maven权威指南 很精典的学习教程,比ANT更好用

    Maven依赖管理 (Dependency Management) 3.5.6. 站点生成和报告 (Site Generation and Reporting) 3.6. 小结 4. 定制一个Maven项目 4.1. 介绍 4.1.1. 下载本章样例 4.2. 定义Simple Weather项目 4.2.1...

    ant使用指南及使用教程

    Ant是Java项目管理和自动化构建的重要工具,尤其在早期的Java EE应用开发中广泛使用。本文将深入探讨Ant的使用指南和教程,帮助你掌握其基本概念和实际操作。 1. Ant基本概念: - 构建文件:Ant的核心是构建文件,...

    Maven2 的新特性.7z

    这些动作在 Maven1 中,是需要在 maven.xml 中使用或来完成的。如今,完全不需要在pom.xml中指定就能够自动完成。在src和test都使用resources,方便构建和测试,这种方式本就已是前人的经验。通过使用Maven2,使这个...

    apache-ant-zip-2.3.jar.zip

    对于Gradle项目,可以在build.gradle文件中使用`implementation`或`compile`配置: ```groovy dependencies { implementation fileTree(dir: 'lib', include: ['*.jar']) implementation 'org.apache.ant:ant-...

    ant-robotframework-0.1.jar.zip

    这可以通过在Ant构建脚本中使用任务或Maven的&lt;dependency&gt;标签来实现。同时,确保所有相关的JAR文件都位于正确的类路径下,以避免运行时的类找不到异常。 总的来说,“ant-robotframework-0.1.jar.zip”是一个结合...

    ant脚本介绍

    Maven提供了更强大的依赖管理和标准的项目布局,但Ant因其灵活性和简单性,仍广泛应用于一些特定场景,尤其是需要高度定制的项目。 8. **集成开发环境(IDE)的支持** 大多数现代Java IDE,如Eclipse和IntelliJ ...

    maven2完全使用手册

    Maven2的Plugin支持Java、BeanShell和Ant脚本,增强了插件的灵活性和功能。 **4. 预定义的模板** Maven2允许用户自定义项目模板,可以快速生成符合规范的项目结构,类似于Appfuse的功能。 **5. 生命周期的引入** ...

    java project转为maven

    在Java开发过程中,项目管理工具Maven已经成为标准配置,它能帮助我们自动化构建、依赖管理和项目信息管理。本文将详细讲解如何将一个非Maven的Java项目转化为Maven项目,以便利用其强大的功能。 首先,我们需要...

    自动化测试系列五 ANT

    然而,如果这些文件是测试数据的一部分,或者包含测试脚本,那么它们可能需要被解压缩并整合到ANT的构建流程中,以便在测试过程中使用。 总结来说,ANT是一个强大的工具,它在自动化测试中的作用不可忽视。通过配置...

    maven构建项目文档

    - 在 `pom.xml` 文件中使用 `&lt;dependencyManagement&gt;` 来统一管理依赖版本。 - 使用 `&lt;exclusions&gt;` 排除不必要的依赖。 #### 4. 社区与贡献指南 - **如何为 Maven 贡献代码或文档?** - 加入邮件列表或者 IRC ...

    maven配置文档

    在`pom.xml`中,你可以声明项目依赖,如`&lt;dependency&gt;`标签,Maven会自动下载并管理这些依赖。 接下来,我们讨论如何在Eclipse中配置Maven。首先,确保你已经在Eclipse中安装了Maven插件,如M2Eclipse。然后,在...

Global site tag (gtag.js) - Google Analytics