如何在使用 Maven 时在属性文件中外部化多个参数?

How to externalise multiple parameter in a properties file while using maven?

我有 pom.xml 和需要 String [] 参数的自定义 mojo 插件。目前我正在使用 pom.xml 来设置值,但现在我希望它应该从属性文件中获取。

我正在使用 Maven 属性插件来读取简单的属性,但我无法为 String [] 这样做,我尝试放入;单独的格式,但我的构建无法成功运行。

我的 pom.xml 文件目前的值设置如下(有效)

<configuration>
 <wcsServerId>${deployWcsServerId}</wcsServerId>
  <deployments>
   <param>@SITE:*</param>                   
   <param>AttrTypes</param>
   <param>ContentAttribute</param>
  </deployments>
</configuration>

我已经尝试将以下内容放入我的属性文件中,并设法使用 Maven 属性插件读取它,但构建没有 运行 成功。

我的属性文件值

global.flags=@SITE:;AttrTypes:;ContentAttribute:;ContentFilter:

然后我按如下方式调用它,在运行时值被拾取但不知何故构建失败。

<configuration>
 <wcsServerId>${deployWcsServerId}</wcsServerId>
  <deployments>    
   <param>${global.flags}</param>
  </deployments>
</configuration>

任何建议或 maven 插件推荐用于多个参数?

我自己设法解决了这个问题....

oracle csdt 插件要求按特定顺序传递参数。

CSDT 将按照找到的顺序处理项目。

这意味着它可以尝试在其依赖项之前导入资产,即使该依赖项存在于批处理的后期。

避免这些问题的方法是确保按顺序导入资产。

该顺序与您在创建网站时使用的顺序相同,例如@SITE、@ATTRIBUTE、@PARENTDEF 等

您可以使用 Maven settings.xml 文件来定义具有多个属性的特殊配置文件。

<settings>
 <profiles>
  <profile>
   <id>MyProperties</id>
   <properties>
    <mojo.plugin.p1>@SITE:*</mojo.plugin.p1>
    <mojo.plugin.p2>AttrTypes</mojo.plugin.p2>
     ...</properties></profile></profiles>
</settings>

然后让你的pom.xml看起来像

<configuration>
 <wcsServerId>${deployWcsServerId}</wcsServerId>
  <deployments>
   <param>${mojo.plugin.p1}</param>                   
   <param>${mojo.plugin.p2}</param>
   <param>${...}</param>
  </deployments>
</configuration>

现在您可以 运行 Maven 以这种方式

mvn -P >

此外,您还可以添加到您的 settings.xml 关注标签

<activeProfiles>
 <activeProfile>MyProperties</activeProfile></activeProfiles>