Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.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_Maven_Maven 3 - Fatal编程技术网

Java 使用Maven动态版本控制发布库

Java 使用Maven动态版本控制发布库,java,maven,maven-3,Java,Maven,Maven 3,自Maven 3.5.0以来,可以在标记内使用一些变量: 假设我有${revision},在一个库项目中,它生成一个jar用于其他项目,而不仅仅是一个web应用程序或批处理应用程序 当我构建并发布我的库v1.0.0 mvn deploy-Drevision=1.0.0-release时,工件名为my-library-1.0.0-release.jar,但是jar中的pom.xml元数据仍然是${revision},是否有一些用例会使我的库无法使用 编辑:如果我的库发布在快照存储库中并作为其他项

自Maven 3.5.0以来,可以在标记内使用一些变量:

假设我有${revision},在一个库项目中,它生成一个jar用于其他项目,而不仅仅是一个web应用程序或批处理应用程序

当我构建并发布我的库v1.0.0 mvn deploy-Drevision=1.0.0-release时,工件名为my-library-1.0.0-release.jar,但是jar中的pom.xml元数据仍然是${revision},是否有一些用例会使我的库无法使用


编辑:如果我的库发布在快照存储库中并作为其他项目的依赖项使用,则会出现相同的问题。

将库作为依赖项使用并发布到共享工件存储库(例如Maven Central)时会出现问题,因为您的pom.xml与工件版本不匹配。也许一些工件存储库可以工作,例如使用自定义配置的本地工件代理,但这会带来问题

您链接到的“安装/部署”一章中提到了这一点,建议使用:

如果您希望使用上述设置安装或部署工件,则必须使用Flatte maven插件,否则您将在存储库中安装/部署工件,maven将不再使用这些工件


将库用作依赖项并发布到共享工件存储库(例如Maven Central)时会出现问题,因为pom.xml与工件版本不匹配。也许一些工件存储库可以工作,例如使用自定义配置的本地工件代理,但这会带来问题

您链接到的“安装/部署”一章中提到了这一点,建议使用:

如果您希望使用上述设置安装或部署工件,则必须使用Flatte maven插件,否则您将在存储库中安装/部署工件,maven将不再使用这些工件


我也有同样的问题。在extension.xml文件中使用此maven扩展名解决:

<extensions>
    <!-- this extension ensures ${revision} gets replaced with the proper value in the output pom files-->
    <extension>
      <groupId>fr.jcgay.maven.extension</groupId>
      <artifactId>unique-revision-maven-filtering</artifactId>
      <version>1.2</version>
    </extension>
</extensions>

我也有同样的问题。在extension.xml文件中使用此maven扩展名解决:

<extensions>
    <!-- this extension ensures ${revision} gets replaced with the proper value in the output pom files-->
    <extension>
      <groupId>fr.jcgay.maven.extension</groupId>
      <artifactId>unique-revision-maven-filtering</artifactId>
      <version>1.2</version>
    </extension>
</extensions>

好答案可能已经在我引用的页面中了:如果你想使用上述设置安装或部署工件,你必须使用Flatte maven插件,否则你将在你的存储库中安装/部署工件,maven将不再使用这些工件。坦率地说,你不应该使用快照依赖项,即使是在本地项目中,因为这会使生成在快照被覆盖时不可复制。@KarolDowbecki那么如何在本地生成项目呢?或者你根本不这样做?如果我在两个项目中进行更改,我会在更改期间使用快照。但这是暂时的,当我完成更改后,我会发布并冻结版本,以确保主分支是稳定的,答案可能已经在我引用的页面中了:如果你想使用上述设置安装或部署工件,你必须使用Flatte maven插件,否则你将在你的存储库中安装/部署工件,maven将不再使用这些工件。坦率地说,你不应该使用快照依赖项,即使是在本地项目中,因为这会使生成在快照被覆盖时不可复制。@KarolDowbecki那么如何在本地生成项目呢?或者你根本不这样做?如果我在两个项目中进行更改,我会在更改期间使用快照。但这是暂时的,当我完成更改后,我会发布并冻结版本,以确保主分支是稳定的。是的,你是对的,我稍后会阅读这部分。只有当你有一个父模块和/或多个模块时,你才需要使用FlatteMaven插件吗?我想如果你的标签中有变量,不管是单模块还是多模块设置,都需要它。最好的测试是使用mvn安装,然后依赖于来自另一个本地项目的这个工件。如果它与本地存储库一起工作,您应该会很好,公共回购协议中有更多的陷阱,如Maven Central。是的,您是对的,我稍后会阅读这部分。只有当你有一个父模块和/或多个模块时,你才需要使用FlatteMaven插件吗?我想如果你的标签中有变量,不管是单模块还是多模块设置,都需要它。最好的测试是使用mvn安装,然后依赖于来自另一个本地项目的这个工件。如果它与本地存储库一起工作,您应该会很好,有更多与公共回购有关的问题,如Maven Central。