我正在使用资源过滤来替换属性文件中的一些$ {values}.
例如,该文件包含PROPERTY = $ {VALUE}
我希望将$ {VALUE}替换为环境变量$ VALUE,如果在构建运行时设置了$ VALUE,则该值很有效.真棒.
但是,这些env变量只在我们的官方构建环境(由Jenkins)中设置,而不是在开发人员构建中,所以$ {values}会在过滤后留在属性文件中,这可能会破坏内容.我宁愿不要求在开发人员环境中使用env vars,因为这总是会导致脆弱的开发构建和狡猾的开发人员.
如果设置了环境变量值,如果未设置env var,如何使用其他默认属性值?
从我的测试来看,它默认是相反的,因为在pom中设置的属性将覆盖环境变量以用于资源过滤.
谢谢
具体来说,我正在尝试运行maven-javadoc-plugin,但每当我更改父/聚合器pom和所有子项的版本号时,第一次运行构建它失败,因为javadoc首先运行并且找不到任何来自模块的新版本包,因为它们尚未构建.
我通常最终不得不为一个版本注释javadoc,然后一旦nexus中的软件包可用于新版本就将其添加回来.但是,这可能意味着我一直在一个构建旧的源jar上构建javadoc.
我已经阅读了另外一个模块的建议,这取决于其他模块,但我认为我不能得到一个模块来为对等模块构建javadoc.将它放在父级中为所有模块构建所有javadoc,我只需要稍后发生.谢谢.这是我的javadoc插件配置.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<inherited>false</inherited>
<executions>
<execution>
<id>generate-javadoc</id>
<phase>package</phase>
<goals>
<goal>aggregate</goal>
</goals>
<configuration>
<aggregate>true</aggregate>
<links>
<link>http://java.sun.com/javase/6/docs/api</link>
<link>http://java.sun.com/javaee/5/docs/api</link>
</links>
<maxmemory>512</maxmemory>
<doclet>org.umlgraph.doclet.UmlGraphDoc</doclet>
<docletArtifact>
<groupId>org.umlgraph</groupId>
<artifactId>doclet</artifactId>
<version>5.2</version>
</docletArtifact>
<additionalparam>
-inferrel -inferdep -outputencoding utf8 -hide
java.* -collpackages
java.util.*
-qualify -postfixpackage
-nodefontsize 9 -nodefontpackagesize 7
</additionalparam>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)