Java Maven如果还有其他类似的行为

Java Maven如果还有其他类似的行为,java,maven,Java,Maven,我在maven中有一个多模块项目,其他项目需要根据环境使用JAR 我们有四种环境 1.发展 2.UAT 3.QA 4.PROD 有一个项目希望将projectname-dev.jar用于所有三种环境(即dev、uat、QA),将projectname-prod.jar用于prod 我在谷歌上搜索了一些类似if-else逻辑的东西,我可以在maven配置文件中使用它 我仍然可以为这个特定项目创建一个新属性,并在它进入produciton时将其更改为“-prod”,但这是我不想添加的额外开销 是否有

我在maven中有一个多模块项目,其他项目需要根据环境使用JAR

我们有四种环境 1.发展 2.UAT 3.QA 4.PROD

有一个项目希望将projectname-dev.jar用于所有三种环境(即dev、uat、QA),将projectname-prod.jar用于prod

我在谷歌上搜索了一些类似if-else逻辑的东西,我可以在maven配置文件中使用它

我仍然可以为这个特定项目创建一个新属性,并在它进入produciton时将其更改为“-prod”,但这是我不想添加的额外开销

是否有任何插件我可以使用这将帮助我完成上述工作,而不增加任何形式的手动开销


谢谢

这不是我们想要做的吗?您可以在不同的配置文件中定义不同的属性值,然后在执行构建时激活其中一个属性值。

这不完全是您想要的,但您不应该构建特定于环境的构件。与流行观点相反,这是对Maven配置文件的严重误用。您应该构建一个适合任何环境的工件。工件外部的工件配置是特定于每个环境的。

我只会在开发中运行maven。我将使用maven进行发布,我将在UAT、QA和PROD中使用该版本,但该版本不会更改。如果环境之间存在配置差异,我将分别对其进行维护。这里的问题是,在一个组织中,有三个团队分别致力于开发、UAT和QA,他们将依靠一个人来创建他们的构建。:)我会有一个持续集成服务器,例如hudson,任何人都可以执行发布(带有说明)。你的问题是UAT和QA可以构建一些几乎相同但不完全相同的东西,并让一些不同的东西再次投入生产。我认为@Peter的观点是,无论如何只有一个构建。其他团队不应该只使用它们来创建构建。Id而不是创建一个新的配置文件,我更愿意创建一个新属性,并在使用-Denv='myenv'构建时将属性传递给maven。这就是在maven中完成特定于环境和丰富环境的构建的理想方式。我不同意你@Neeraj的观点。axtavt推荐使用配置文件是非常正确的。在配置文件中,您可以为该类型的生成指定任意数量的属性。在命令行上定义每个属性要灵活得多是的,我完全同意你的看法。与其创建4个不同的配置文件,工件应该为每个环境都有一个配置,而这正是我在这里寻找的。那么,也许我们不理解您的要求,因为听起来您似乎在寻找一种针对不同环境有条件地运行maven构建的方法。更可能的情况是,您应该让maven构建您的工件,并使用将工件与多个不同的环境配置捆绑到一个zip文件中。在每个构建环境中没有不同的工件的情况下,您如何为dev、prod配置它?