9

現在、maven-war-plugin で maven 3.x を使用しています。開発者のビルドでは、war:exploaded ゴールを使用できるようにしたいと考えていますが、変更されたリソースのみをコピーします。これを行う方法はありますか?

私はドキュメントを調べてきましたが、現在のバージョンでこれを行う方法を見つけることができませんでしたが、以前は (古い maven 1.x バージョンでは) プロパティ maven.war.resources.overwrite がありました。これを許可します。

ありがとう。

4

2 に答える 2

1

maven-war-pluginを使用してこれを行う方法を私は知りませんが、IDEがそれをサポートしている場合は、IDEに変更を自動デプロイさせることができます。たとえば、Eclipse用のWeb Tools Platformは、Tomcat用のこの機能をサポートしています。ただし、ビルドプロセスが複雑であるか、maven-war-pluginを呼び出す前に何か奇妙なことをする場合、これはうまくいかない可能性があります。

2番目のオプション:Linuxを実行している場合は、最近変更されたファイルをサーブレットコンテナにコピーするようにrsyncを設定します。同僚は、サーブレットコンテナのWebアプリディレクトリをEclipseプロジェクトの出力ディレクトリと同期させることでこれを行い、うまく機能しました(コードを変更するだけで、Eclipseが自動的にビルドし、rsyncが変更をコピーします)。

于 2011-05-24T04:19:31.553 に答える
0

この目的のために、maven-antrun-plugin を使用します

例:

<project xmlns="http://maven.apache.org/POM/4.0.0" 
....
....
    <!--DJ: Settings for deploy only-->
    <!--DJ: Dir to where copy files-->
    <!--DJ: And date when build have been started, to select only modified files in the future-->
    <properties>
        <tomcat.dir.rootDir>C:\apache-tomcat-6.0.35\webapps\ROOT1</tomcat.dir.rootDir>
        <maven.build.timestamp.format>yyyy-MM-dd HH:mm:ss</maven.build.timestamp.format>
    </properties>
 .....
<!--Ohter dependensies here-->
 .....
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copyModifiedFilesFrom_ExplodedWAR_Dir</id>
                        <phase>install</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <configuration>
                            <tasks>
                                <echo message="Upload new files to dir ${tomcat.dir.rootDir} modified after date ${maven.build.timestamp} "/>
                                <copy todir="${tomcat.dir.rootDir}">
                                    <fileset dir="${project.build.directory}/${project.build.finalName}" includes="**/*">
                                        <!-- Include only recompiled files -->
                                        <date datetime="${maven.build.timestamp}" pattern="yyyy-MM-dd HH:mm:ss" when="after"/>
                                        <!-- and only *.class files -->
                                        <filename name="**/*.class"/>
                                    </fileset>
                                </copy>
                            </tasks>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
.....
.....
        </plugins>
    </build>
</project>

次に、パラメーターを指定して maven を実行します: mvn pom.xml compile install org.apache.maven.plugins:maven-war-plugin:2.1-alpha-1:exploded

その結果、変更されたファイルのみが再コンパイルされ、再コンパイルされたファイルのみが tomcat webapp dir で置き換えられます。

于 2012-12-14T12:09:42.557 に答える