【问题标题】:Maven ant task to add system path jar to WAR file将系统路径 jar 添加到 WAR 文件的 Maven ant 任务
【发布时间】:2014-09-03 14:35:57
【问题描述】:

遇到一个小问题。我有一个spring-maven项目。我需要将一些外部 jar 添加到我使用的 POM 中。 现在要构建 WAR 文件,我们使用 Ant Maven 任务,即提供参数 war:war 的 artifact:mvn。 这里不知何故我的外部 jar 没有被添加到 WAR 文件中,即 WEB-INF/lib

如果我遗漏了什么,请有人告诉我。下面是我的pom条目

<dependency>
    <groupId>{test}</groupId>
    <artifactId>Test</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/lib/test.jar</systemPath>
</dependency>

【问题讨论】:

    标签: maven ant


    【解决方案1】:

    最好的解决方案是开始使用存储库管理器(也称为“Maven 代理服务器”)并将所需的工件(test.jar)安装到存储库管理器中,并将其用作通常的依赖项,而不是通过 systemPath 使用 system 范围.

    通过 Ant 调用 mvn war:war 没有意义,这表明您应该了解 Maven 的工作原理。

    将你的pom文件中的打包类型改为war,你就可以简单的调用maven了:

    mvn clean package
    

    一切都应该正常。但这只是猜测,因为您没有显示完整的 pom 文件。

    【讨论】:

    • 问题:如何避免在每台构建机器上安装工件并简单地将它们与项目一起带来?
    【解决方案2】:

    使用mvn install:install-file (docs) 在本地安装test.jar。现在您可以删除system 范围(和systemPath),一切都可以开箱即用。

    【讨论】:

    • 试图处理同样的问题。问题是这个解决方案虽然形式上是正确的,但并不总是实用的:在我的例子中,我们在许多机器上构建我们的项目。除了基本的 git pull 之外,在每台机器上执行棘手的步骤非常不方便。
    • @AlexNevidomsky:在您的情况下,您应该安装一个本地代理服务器,即“存储库管理器”并配置所有开发机器以使用它。这样,您还可以确保没有人意外引入不需要的代码(例如具有 GPL 许可证的项目)。然后您可以使用mvn deploy 将文件部署到代理。
    猜你喜欢
    • 2012-05-15
    • 2015-09-27
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多