简体   繁体   中英

Using Maven WAR Plugin with Profiles

I'm trying to get images to my Maven web-application according to the profile selected at build time. But I keep on getting the whole folder of all the profiles to the point where I need the images to go.

<build>
    <finalName>user-interface</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
                <webResources>
                    <webResource>
                        <directory>src/main/profile/webapp/</directory>
                        <targetPath>images</targetPath>
                    </webResource>
                </webResources>
            </configuration>
        </plugin>
    </plugins>
</build>

<profiles>
    <profile>
        <id>user</id>
    </profile>
    <profile>
        <id>dev</id>
    </profile>
</profiles>

How to fix this? Default image is banner.jpg and both profiles have respective images in correct order. Inside src/main/profile/webapp/ there are 2 folders user and dev with each having images folder and the banner.jpg inside images folder.

You need to define a custom property inside each profile and then reference that property in the configuration of the plugin:

<build>
    <finalName>user-interface</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
                <webResources>
                    <webResource>
                        <directory>src/main/profile/webapp/${banner.folder}</directory>
                        <targetPath>images</targetPath>
                    </webResource>
                </webResources>
            </configuration>
        </plugin>
    </plugins>
</build>

<profiles>
    <profile>
        <id>user</id>
        <properties>
            <banner.folder>user</banner.folder> <!-- defines banner.folder property when the user profile is activated -->
        </properties>
    </profile>
    <profile>
        <id>dev</id>
        <properties>
            <banner.folder>dev</banner.folder> <!-- defines banner.folder property when the dev profile is activated -->
        </properties>
    </profile>
</profiles>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM