在我们的应用程序中,我们有一个whitelabel系统。
application.properties
中的设置为theme=default
将此设置注入Spring托管bean,然后通过框架对应用程序进行操作,例如添加正确的css等
我希望能够做的是,在构建时(战争创建),指定主题,例如mvn clean install -theme:some-theme
。然后,这会更新application.properties
,并修改theme
如果您只运行mvn clean install
,那么theme=default
或unmodified
这可能吗?
答案 0 :(得分:7)
通过命令行设置属性的正确方法是使用-D
:
mvn -Dproperty=value clean package
覆盖先前在pom.xml
中定义的任何属性。
所以,如果你有pom.xml
:
<properties>
<theme>myDefaultTheme</theme>
</properties>
mvn -Dtheme=halloween clean package
会在执行期间覆盖theme
的值,效果就像你有:
<properties>
<theme>halloween</theme>
</properties>
答案 1 :(得分:2)
我猜你要找的是maven build profiles和resource filtering。您可以为每个主题分配一个配置文件,并根据配置文件,您可以更改application.properties中参数的值
e.g。
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>white</id>
<properties>
<theme>white</theme>
<prop1>xyz</prop1>
<!--and some other properties-->
</properties>
</profile>
<profile>
<id>default</id>
<properties>
<theme>default</theme>
<prop1>abc</prop1>
<!--and some other properties-->
</properties>
</profile>
</profiles>
你可以在src / main / resources中找到一个属性文件:
application.properties:
my.theme=${theme}
my.custom.property=${prop1}
这种方法可以灵活地根据配置文件进行自定义,因此可以说是批量自定义。