设置Maven Pom以处理跨环境的依赖项

时间:2018-09-20 22:28:11

标签: maven

我有一个Java项目a-1.0.jar,其依赖项为ojdbc.jar,而b.jar依赖于a-1.0.jarojdbc.jar。我正在尝试使其在我的计算机,新用户计算机和Bamboo服务器上运行。

期望的行为:
项目应在本地计算机git clone <git_url>mvn clean installjava -jar b.jar上运行。 Bamboo应该检出并运行项目。
在Bamboo上:计划可以签出项目并运行它。构建应跟踪已构建的b.jar和使用的a.jar的版本。

到目前为止,我看到了以下选项:
 <systemPath>${project.basedir}/lib/a-1.0.jar</systemPath>:maven警告说它将无法解决依赖关系
一个Perl脚本,可在构建项目之前为每个相关的jar运行mvn install
(1)破坏了DevOps自动化的目的
(2)无法确定使用了哪个版本的罐子
(3)安装jar,但java -jar b.jar失败a.jar丢失

我可以用另一个Perl脚本克服这个问题,该脚本将依赖的jar添加到类路径中

这些是基本任务,作为构建工具,Maven应该能够做到。

如何告诉Maven以下三个目标?
(1)对于每个未知的导入-从lib文件夹中获取一个jar
(2)制作一组依赖的jar。那就是不要两次导入ojdbc
(3)装一个可以运行的自足罐子,不会因“东西丢失”而失败

2 个答案:

答案 0 :(得分:1)

似乎您需要创建一个可执行jar-为此,您可以使用各种方法。

其中之一是添加maven-shade-plugin,它将所有依赖项放入单个jar中,同时还要注意潜在的资源冲突。

答案 1 :(得分:0)

尝试使用非maven-jar-maven插件。它会添加不在maven中央的jar。