使用 Maven Ant 任务

声明依赖

Maven Ant Tasks 的主要目的是利用 Maven 的依赖管理特性

这是通过依赖项任务实现的。最简单的用法涉及内联指定您的依赖项,例如在以下示例中:

<artifact:dependencies pathId="dependency.classpath">
  <dependency groupId="junit" artifactId="junit" version="3.8.2" scope="test"/>
  <dependency groupId="org.codehaus.modello" artifactId="modello-core" version="1.0-alpha-2-SNAPSHOT"/>
  <dependency groupId="javax.servlet" artifactId="servlet-api" version="2.4" scope="provided"/>
</artifact:dependencies>

上面的示例将下载这 3 个依赖项,以及它们的依赖项,等等。它们将存储在默认的本地存储库位置${user.home}/.m2/repository

您可能已经注意到pathId引用。这是可选的,但如果给定将创建一个类路径引用,其中包括作为依赖项下载的本地文件。这通常用于传递给javac或其他任务:

您还可以使用 Maven 2.0 POM 来声明您的依赖项,如示例 中所述。这是推荐的做法,以便您可以重用该文件来部署您自己的工件。

有关使用依赖项任务的更多示例,请参阅示例页面

安装您自己的工件并将其部署到存储库

Maven 允许使用本地和远程存储库在项目之间共享工件。安装任务允许将工件复制到本地 maven 存储库(通常位于 ~/.m2/repository 中)。

部署任务允许将工件部署到远程 maven 存储库,在那里它们可用于其他项目。

有关使用安装和部署任务的示例,请参阅示例页面

使用 Maven POM文件

在 Maven 中,项目对象模型 (POM) 表示一个工作单元——每个构建的工件都有一个工作单元。

将您自己的工件部署到存储库以用于其他项目的依赖项元素需要一个 Maven 2.0 POM 文件。

它也可以用于声明您自己的依赖项,而不是指定前面给出的内联版本。

有关创建 pom 和使用pom任务的示例,请参阅示例页面

声明存储库

所有任务都可以选择使用一个或多个远程存储库进行下载和上传,以及一个本地存储库来存储下载和安装的档案。

这些可以内联指定,或者如果您选择重用它们,可以使用id / refid组合声明它们。

例如,您可以指定要使用的远程存储库:

<artifact:remoteRepository id="remote.repository" url="http://repository.mycompany.com/" />
...
<artifact:dependencies>
  <!-- Your dependency definitions go here -->
  ...
  <remoteRepository refid="remote.repository" />
</artifact:dependencies>

默认中央存储库会自动添加到远程存储库。在 2.0.10 之前,如果指定了至少一个远程存储库,则不会自动添加 central:如果需要,您必须声明它。

注意:要使用传递依赖项,您必须使用 Maven 2.0 存储库。

如果您的存储库需要身份验证,您可以将其作为嵌套元素提供。它接受属性usernamepassword以及基于 SSH 的存储库的privateKeypassphrase。例如:

<authentication username="brett" privateKey="${user.home}/.ssh/id_dsa" />

设置文件

POM 可用于表示任务可以访问的大部分信息,包括远程存储库。特定于用户或环境的信息(例如身份验证标记)在 Maven 的settings.xml文件中指定,也可以从 Ant 任务中访问。

该文件首先在${user.home}/.ant/settings.xml中查找,然后在${user.home}/.m2/settings.xml中查找,以便可以与 Maven 2.0 本身共享设置。从 2.0.7 开始,然后在${ANT_HOME}/etc/settings.xml中查找它,然后在${M2_HOME}/conf/settings.xml中查找,以便可以为所有用户设置设置。

从 2.0.6 开始,您可以使用settingsFile属性在任何地方提供对设置文件的访问:

<artifact:dependencies settingsFile="/opt/maven/conf/settings.xml">
  ...
</artifact:dependencies>

例如,要指定代理设置,您将指定以下settings.xml文件:

<settings>
  <proxies>
    <proxy>
      <protocol>http</protocol>
      <host>proxy.host.net</host>
      <port>8080</port>
      <nonProxyHosts>localhost</nonProxyHosts>
    </proxy>
  </proxies>
</settings>

或者要指定中央镜像,您可以指定以下settings.xml文件:

<settings>
  <mirrors>
    <mirror>
      <id>central.mirror</id>
      <url>http://mirror.host.net/maven2</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>
</settings>

有关配置settings.xml的更多信息,请参阅:

更多示例

  • Maven Ant Tasks 的build-tests.xml是一个样例 Ant 脚本,展示了大部分的实际功能(它被用作单元测试)。
  • Maven 本身可以使用 Maven Ant 任务进行引导:请参阅Maven 核心源代码中的build.xml。请注意,大部分内容都是关于构建 Maven 项目:只有一小部分是使用 Maven Ant Tasks 来获取依赖项,即拉取目标(及其依赖目标)。