3

在我们的应用程序中,我们有一个白标系统。

application.properties里面有一个设置theme=default

此设置被注入到 Spring 托管 bean 中,然后通过框架对应用程序进行操作,例如添加正确的 css 等

我希望能够做的是在构建时(创建战争),指定主题,例如mvn clean install -theme:some-theme. 然后这将更新application.properties和修改theme ,如果您mvn clean install当时运行theme=defaultunmodified

这可能吗?

4

2 回答 2

7

通过命令行设置属性的正确方法是使用-D

mvn -Dproperty=value clean package

它将覆盖之前在pom.xml.


所以如果你有你的pom.xml

<properties>
    <theme>myDefaultTheme</theme>
</properties>

mvn -Dtheme=halloween clean package将在此执行期间覆盖themes 值,效果类似于:

<properties>
    <theme>halloween</theme>
</properties>
于 2013-05-14T12:16:00.410 回答
2

我猜您正在寻找的是 Maven 构建配置文件和资源过滤。您可以为每个主题分配一个配置文件,并根据配置文件,您可以更改 application.properties 中的参数值

例如

<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 中拥有一个属性文件:

应用程序属性:

my.theme=${theme}
my.custom.property=${prop1}

这种方法提供了基于配置文件进行定制的灵活性,因此可以说是批量定制。

于 2013-05-14T12:22:56.323 回答