【问题标题】:Is there the equivalent of “<ant antfile=xxx/>” in maven pom.xml?maven pom.xml 中是否有“<ant antfile=xxx/>”的等价物?
【发布时间】:2014-08-02 06:30:54
【问题描述】:

我有两个以前由 ant 构建的项目。我称它们为 P1 和 P2,P1 是 java 项目,P2 是 web 项目。 P2 将 P1 作为 jar 文件包含在内。以前我在构建P2的时候,可以先把&lt;ant antfile="${common}/../build.xml" inheritAll="false"&gt;&lt;/ant&gt;加到build.xml里面,把P1做成一个jar文件,然后再把这个jar复制到P2的lib文件夹下。

现在我将它们都转换为 Maven 项目。我不知道如何暗示上面的过程。我知道有一些方法可以在 maven 进程中运行ant。但现在 P1 也是一个 Maven 项目。我该如何处理这个问题?我想在包P2之前制作一个P1.jar,我真的认为没有必要先将P1.jar部署或安装到maven repo。有什么方便的方法吗?

【问题讨论】:

    标签: maven ant jar


    【解决方案1】:

    为什么要将 Ant 项目转换为 Maven?您是否正在尝试通过构建解决一些问题?或者,您认为 Maven 更好,因此您需要在 Maven 中重写所有内容?不要碰有用的东西。有足够多的坏东西你可以管理。

    在 Maven 中,您可以创建这两个独立的项目:

    • P1 将构建 jar 并将此 jar 部署到您的本地 Maven 存储库中。
    • 当 P2 构建时,它会从您的 Maven 存储库中获取预构建的 P1 jar。

    您可以使用 Jfrog's ArtifactorySonatype's Maven 作为本地 Maven 存储库。

    您还可以将这两个项目构建为subprojects。在这种情况下,P1 和 P2 将是两个子项目,而您将拥有一个 P3,它几乎什么都没有,只有一个 pom.xml 可以构建这两个项目。

    【讨论】:

    • 非常感谢。将ant转换为maven的决定是我们团队做出的,因为我们的svn服务器有很多重复的jar文件。我们有一个nexus服务器来控制我们的jar,但是我还有一个问题是P1也被一个项目使用,我们可以称之为P4,当我们使用ant构建时,没有问题。如何在 Maven 中构建这三个项目?我可以在构建其他项目之前运行 mvn install 自动安装 P1.jar 吗?
    • @lbear 在依赖 P1 的项目的 pom 文件中将 P1 声明为依赖项。
    • @lbear 在转换为 Maven 之前,请查看 Ivy。 Ivy 与您当前的 Ant 构建集成。您所要做的就是创建一个ivy.xml 来声明您的第一级jar 依赖项(就像使用Maven 一样),然后通过&lt;ivy:retrieve&gt; 下载jar。你得到了相同的 Maven 依赖解析,但几乎可以保持你旧的构建系统完好无损。对于新项目,我更喜欢 Maven 而不是带有 Ivy 的 Ant,但是对于使用 Ivy 的旧项目,可以为您提供 Maven 90% 的功能,而且无需重新构建所有内容。
    • @lbear 关于 Ivy 和 Ant 的优秀书籍是 Manning's Ant in Action。 Safari Books on Line 在他们的收藏中。
    • @DavidW。非常感谢。我试试看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-29
    • 2013-06-21
    • 2014-01-09
    • 2012-02-18
    • 2014-05-02
    • 1970-01-01
    相关资源
    最近更新 更多