Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.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
Java 将maven子模块部署到存储库以供其他项目使用(无父项目)_Java_Jakarta Ee_Maven - Fatal编程技术网

Java 将maven子模块部署到存储库以供其他项目使用(无父项目)

Java 将maven子模块部署到存储库以供其他项目使用(无父项目),java,jakarta-ee,maven,Java,Jakarta Ee,Maven,问题是,在我们公司,我们有一个包含多个子模块的项目,但是其中一个子模块只是API声明的集合,用于其他(第三方)项目。我想把它作为一个子模块,因为它更易于维护和构建(依赖项和属性继承)。本项目中的其他子模块也依赖于此 我的问题是,是否有一个好的实践或好的方法来执行部署阶段,只将这个子模块上载到不同的存储库(也可以复制),而不依赖于父pom 我已经尝试过的: 我已经检查了deploy:deploy文件,但问题是当涉及到快照构建时。我们希望能够发布快照和发布版本,快照的存储库与发布版本不同,但部署文件

问题是,在我们公司,我们有一个包含多个子模块的项目,但是其中一个子模块只是API声明的集合,用于其他(第三方)项目。我想把它作为一个子模块,因为它更易于维护和构建(依赖项和属性继承)。本项目中的其他子模块也依赖于此

我的问题是,是否有一个好的实践或好的方法来执行部署阶段,只将这个子模块上载到不同的存储库(也可以复制),而不依赖于父pom

我已经尝试过的: 我已经检查了deploy:deploy文件,但问题是当涉及到快照构建时。我们希望能够发布快照和发布版本,快照的存储库与发布版本不同,但部署文件目标只能有一个url参数。我不希望对快照部署使用不同的配置文件。然后,我尝试使用maven build helper及其regex属性来更改存储库url(如果版本是快照),但由于插件和regex的限制,我无法这样做


最后一个选项是,我可以为此制作一个插件,但我想知道是否有一种更优雅的方法来解决这个问题,即“maven方法”。

您可以单独部署此模块,但仅针对快照的发布,这是没有意义的。模块的部署可通过以下方式完成:

mvn -pl TheModuleYouWouldLikeToDeploy deploy
可能您需要添加选项-am(也可以创建依赖项),如:


除此之外,您的方法听起来是错误的,因为如果您使用的是多模块构建,为什么不通过mvn deploy部署整个构建?也许让我们通过像Jenkins这样的CI工具来完成这项工作会更好

只是为了确保:您想运行
mvn deploy
,但实际上只将“客户端”jar部署到存储库?是的,我们有两个独立的存储库,一个是内部存储库,一个是“公共存储库”,只有客户端模块应该进入公共存储库。如果特定子模块需要完全独立的发布策略(版本增量、scm标记、不同的分发存储库等),最佳的“maven方式”IMO将分离并使其成为一个独立的模块。我们不想完全分离它的原因是版本、标记、scm和构建配置与父级相同,但只有生成的jar应单独部署到另一个nexus存储库中,供第三方使用。此jar是第三方唯一的依赖项“插件”需要在编译时使用。我认为-pl-am不会有帮助,因为正常的部署也会部署子模块的pom,它定义了父模块。因此,如果创建一个依赖于所述子模块的新项目,构建将失败,因为maven将找不到父模块(不需要eve tho)
mvn -am -pl TheModuleYouWouldLikeToDeploy deploy