【发布时间】:2018-05-13 21:10:36
【问题描述】:
我想部署一个依赖于第 3 方 jar 的 maven 项目,该 jar 位于与我的项目源一起分发的“lib/”目录中。
执行此操作的常用方法(如 inotheranswers 所述)是让用户在构建项目之前将 jar 安装到本地 maven 存储库中,方法是在以下位置键入 mvn install:install-file 等命令外壳。
但是,此手动解决方案不适用于部署(因为要求用户手动安装依赖项是所以 1998...)。所以我想我会在我的pom.xml 中指定一个install-file 目标:
<dependency>
<groupId>edu.my.id</groupId>
<artifactId>myartifact</artifactId>
<version>1.0</version>
</dependency>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
<executions>
<execution>
<id>install-jar-lib</id>
<phase>validate</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<groupId>edu.my.id</groupId>
<artifactId>myartifact</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<file>${project.basedir}/lib/myartifact.jar</file>
<generatePom>true</generatePom>
</configuration>
</execution>
</executions>
问题是 maven 尝试在 install-file 运行之前解决依赖关系,即使我指定它早在 validate 阶段运行。因此它抱怨它找不到依赖项。
这个问题是askedbefore,并且提供了一些令人不快的复杂解决方案,例如:
- 在
clean阶段运行maven-install-plugin,并要求用户在构建工件之前运行mvn clean。 - 设置多个模块,如here 所述。
- 使用
<systemPath>将jar 作为系统库加载。 (这不符合我的要求,因为我使用maven-dependency-plugin将依赖jar 复制到部署的应用程序目录中,忽略系统库。) - 编写自定义插件。
这些都不能让我满意。这似乎是任何构建系统遇到的例行任务。用maven安装依赖一定有更简单的方法。
【问题讨论】:
标签: maven