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

时间:2015-01-29 17:00:18

标签: arrays xml maven properties param

我有pom.xml和自定义mojo插件,需要String []参数。目前我正在使用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插件建议用于多个参数?

2 个答案:

答案 0 :(得分:1)

您可以使用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&lt; MyProperties,&lt;任何其他个人资料&gt;&gt; &lt;目标&GT;

此外,您可以在标记

之后添加到settings.xml
<activeProfiles>
 <activeProfile>MyProperties</activeProfile></activeProfiles>

答案 1 :(得分:0)

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

oracle csdt插件需要以特定顺序传递参数。

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

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

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

订单与您在创建网站时使用的订单相同,例如@SITE,@ ATTRIBUTE,@ PARENTDEF等。