Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
设置maven pom以处理跨环境的依赖关系_Maven - Fatal编程技术网

设置maven pom以处理跨环境的依赖关系

设置maven pom以处理跨环境的依赖关系,maven,Maven,我有一个Java项目a-1.0.jar,它具有ojdbc.jar依赖关系和b.jar,依赖于a-1.0.jar和ojdbc.jar。我正在尝试让它在我的机器上工作,新用户机器和竹服务器 期望的行为: 在本地机器上,git clone,mvn clean install,java-jar b.jar项目应该运行。竹子应该结帐并运行项目。 关于竹子:一个计划可以检查一个项目并运行它。构建应该跟踪构建的b.jar版本和使用的a.jar版本 到目前为止,我看到了这些选项: ${project.based

我有一个Java项目
a-1.0.jar
,它具有
ojdbc.jar
依赖关系和
b.jar
,依赖于
a-1.0.jar
ojdbc.jar
。我正在尝试让它在我的机器上工作,新用户机器和竹服务器

期望的行为:
在本地机器上,
git clone
mvn clean install
java-jar b.jar
项目应该运行。竹子应该结帐并运行项目。
关于竹子:一个计划可以检查一个项目并运行它。构建应该跟踪构建的
b.jar
版本和使用的
a.jar
版本

到目前为止,我看到了这些选项:
${project.basedir}/lib/a-1.0.jar
:maven警告它将无法解析依赖项
一个Perl脚本,用于在构建项目之前为每个依赖jar运行
mvn install
(1) 违背了DevOps自动化的目的
(2) 不清楚使用了哪个版本的jar
(3) 安装jar,但是
java-jar b.jar
失败
a.jar
丢失

我可以通过另一个将依赖JAR添加到类路径的Perl脚本来克服这一问题

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

如何告诉Maven实现以下三个目标?
(1) 对于每个未知导入-从lib文件夹获取一个jar
(2) 制作一组相关的罐子。也就是说,不要导入两次ojdbc


(3) 打包一个运行的自给自足的jar,不会因为“stuff is missing”而失败。似乎您需要创建一个可执行的jar——为此,您可以使用各种方法


其中一个是add,它将所有依赖项放在一个jar中,同时考虑潜在的资源冲突。

尝试非maven-jar-maven-plugin。它添加了不在maven central中的JAR。

不幸的是,如果这些依赖项不在maven central中,shade无法导入依赖项JAR。此外,它还抱怨在
a.jar
b.jar
中是否对相同的依赖项进行了着色+1获取帮助。开始使用存储库管理器并安装central中不存在的此类DEP。之后,您可以像往常一样使用它们。并且使处理更容易。同样在CI服务器(Bambol)上也是如此。@khmarbaise这不是一个选项。我们的组织正在经历一场旷日持久的变革。我们公司的一些部门有权使用artifactory,但我的办公室没有。但管理层希望尽快建立本地和竹子工厂。maven可以从Git获得JAR吗?如果这不是一个选项的话。这真的很糟糕,因为使用存储库管理器是最简单的选择……而且没有一个Maven不使用Git的JAR,因为Git是一个版本控制工具,而不是存储库管理器。。。。