0

次の3つのファイルを含むSpring frameworkプロジェクトがありますsrc/main/webapp/WEB-INF

project.propterties
project-servlet.xml
project-security.xml

ビルドmaven profilesの場合、上記のファイルを「注入」するために次のように使用しようとしています。prod

        <profile>
        <id>prod-build</id>
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>1.7</version>
                    <executions>
                        <execution>
                            <phase>prepare-package</phase>
                            <goals>
                                <goal>run</goal>
                            </goals>
                            <configuration>
                                <target>
                                    <delete
                                        file="${project.build.directory}/${project.build.finalName}/WEB-INF/project.properties" />
                                    <copy file="src/main/config/prod/project.properties"
                                        tofile="${project.build.directory}/${project.build.finalName}/WEB-INF/project.properties" />
                                </target>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>2.3</version>
                </plugin>
            </plugins>
            <resources>
                <resource>
                    <directory>src/main/resources/prod</directory>
                </resource>
            </resources>
        </build>
    </profile>

問題は、maven-antrun-plugin実行する機会が得られるまでに、warはすでにパッケージ化されていることです。アリ<target>は走って適切な変更を加えますが、遅すぎます。

コマンドライン:

$ mvn -Pprod-build clean install

mvn出力:

    [INFO] --- maven-antrun-plugin:1.7:run (default) @ FocusMVN ---
[INFO] Executing tasks

main:
     [copy] Copying 1 file to J:\work\workspace\FocusMVN\target\myproject\WEB-INF
[INFO] Executed tasks
[INFO] 
[INFO] --- maven-war-plugin:2.3:war (default-war) @ FocusMVN ---
[INFO] Packaging webapp
[INFO] Assembling webapp [FocusMVN] in [J:\work\workspace\FocusMVN\target\myproject]
[INFO] Processing war project
[INFO] Copying webapp resources [J:\work\workspace\FocusMVN\src\main\webapp]
[INFO] Webapp assembled in [3198 msecs]
[INFO] Building war: J:\work\workspace\FocusMVN\target\myproject.war
[INFO] 
[INFO] --- maven-install-plugin:2.3.1:install (default-install) @ FocusMVN ---
[INFO] Installing J:\work\workspace\FocusMVN\target\myproject.war to C:\Users\mansoork\.m2\repository\ca\utoronto\med\dc\FocusMVN\0.0.1-SNAPSHOT\FocusMVN-0.0.1-SNAPSHOT.war
[INFO] Installing J:\work\workspace\FocusMVN\pom.xml to C:\Users\mansoork\.m2\repository\ca\utoronto\med\dc\FocusMVN\0.0.1-SNAPSHOT\FocusMVN-0.0.1-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

どんなポインタでも大歓迎です。

4

2 に答える 2

1

この行に注意しましたか

[INFO] Copying webapp resources [J:\work\workspace\FocusMVN\src\main\webapp]

どうしたの ?

(開発者を含む)のコンテンツを戦争にmaven-war-pluginコピーします。そして、これを実行している間、antタスクによってコピーされたものを置き換えます。src/main/webapp project.properties

試すことができるのはproject.properties、maven-war-pluginによってコピーされたファイルセットからを除外することです(Antタスクによってすでにコピーされているため)。

<plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.3</version>     
    <configuration>
       <warSourceExcludes>WEB-INF/project.propterties</warSourceExcludes>
    </configuration>
</plugin>

参照

于 2013-02-05T16:05:07.490 に答える
1

フェーズでは、 packageの代わりにprepare-packageを使用します

maven-antrun-plugin の代わりにcopy-maven-pluginを使用してみてください

<plugin>
            <groupId>com.github.goldin</groupId>
            <artifactId>copy-maven-plugin</artifactId>
            <version>0.2.5</version>
            <executions>
                <execution>
                    <id>create-archive</id>
                    <phase>prepare-package</phase>
                    <goals>
                        <goal>copy</goal>
                    </goals>
                    <configuration>
                        <resources>
                            <resource>
                            <targetPath>${basedir}/target/</targetPath>
                            <directory>${basedir}/src/main/webapp/WEB-INF</directory>
                            <includes>
                                <include>**/project*</include>
                            </includes>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>
于 2013-02-05T14:48:43.673 に答える