当前位置: 首页 > 知识库问答 >
问题:

如何使用属性激活maven子模块中的配置文件?

林俊英
2023-03-14

我在Ubuntu18.04上使用Maven 3.6.0和OpenJDK8(也在Alpine Linux上测试)。

我有一个pom.xml在我的项目的根,包括我的子模块:

...
  <modules>
    <module>mysubmodule</module>
  </modules>
...

mysubmodule文件夹中,pom。xml有一个配置文件,我想根据传递给mvn可执行文件的属性激活该配置文件:

...
    <profile>
      <id>my-profile</id>
      <activation>
        <property>
          <name>activateMyProfile</name>
        </property>
      </activation>
      ...
    </profile>
...

然后我执行mvn开始构建,但配置文件从未激活:

  • 如果我运行mvn-DtivateMyProfile版本:准备从我的项目的根,配置文件永远不会激活,永远不会运行
  • 如果我运行mvn释放:准备从我的项目的根,配置文件永远不会运行。

我也尝试了相反的方法:

...
    <profile>
      <id>my-profile</id>
      <activation>
        <property>
          <name>!doNotActivateMyProfile</name>
        </property>
      </activation>
      ...
    </profile>
...
  • 如果我从项目的根目录运行mvn-DdoNotActivateMyProfile release:prepare,配置文件仍会执行
  • 如果我从项目的根目录运行mvn release:prepare,配置文件也会执行

看起来,mvn无法看到通过命令行传递的属性。使用属性激活子模块中的配置文件的正确方法是什么?

共有1个答案

孟光耀
2023-03-14

在我使用maven release插件时,必须使用-Darguments参数传递参数。

例如,正确的调用是:mvn-Darguments=-DactivateMyProfile-release:prepare,而不是使用mvn-DactivateMyProfile-release:prepare

如果有多个参数,请使用mvn-Darguments=“-DactivateMyProfile-DsomeOtherArg-DanotherArg=something”发布:prepare

 类似资料:
  • 我们有一个多模块maven项目,它有不同的平台可以运行,比如JBoss 4和JBoss 7。我们指定属性,然后将其用作工件的分类器,以及子模块中特定于平台的概要文件的激活,如: 在这些概要文件中,我们指定了提供的依赖项的版本。例如,我们进口jboss父pom: 因此,当我们将属性指定为命令行参数()时,它可以正常工作。 但是当属性在

  • 出于某种原因,我不得不使用环境变量,而不是将系统属性传递给mvn命令。所以,我使用${env。PROFILE}作为属性名,pom.xml中的配置文件设置显示如下: 然后,我尝试激活配置文件到在线,但我失败了,命令行显示如下: 然后打开maven调试模式(-X),属性如下所示: 我们可以在上述属性列表中找到属性: “PROFILE”变量似乎是在envrionment中设置的。但是,“在线”配置文件未

  • Maven允许根据其运行的操作系统系列激活某些构建概要文件,例如: 这里有很多问题:那么的允许值是多少?它们区分大小写吗?Linux是吗?还是?等等。 我可以在哪里找到关于允许的值的信息-或者,至少,Maven从哪里获取这些值?环境变量?

  • 当前情景: 父pom有一个distributionManagement部分,其中定义了两个存储库(发布和快照);请参阅以下内容: 父pom: 基于同一pom中指定的“版本”,maven会自动识别是在发布中部署工件还是在nexus中部署快照存储库。(我相信这是使用版本是否有任何“-SNAPSHOT”后缀来完成的。) 有一个子pom定义了一些部署文件目标;请参阅以下内容: 儿童pom: 问题: 正如您

  • 我有主pom。xml我喜欢从我正在使用的主mvn命令行cli更改,并更改: 参数仅在子模块中:module_y配置文件不module_x 这是我现在执行的命令: mvn清洁安装-Ddocker_build=构建 这是module_xmodule_y 简而言之,如何从主mvn运行中仅更改概要文件docker_内置模块_y中的属性值${docker.image}?

  • 下面是我的Spring boot(2.4.5)应用程序的应用程序yaml,有两个配置文件。 Spring:配置文件:dev 但是根据环境配置文件可以不同。我不想硬编码配置文件