Копировать только измененные файлы в maven-war-plugin - PullRequest
9 голосов
/ 01 апреля 2011

В настоящее время я использую maven 3.x с плагином maven-war. Для сборок для разработчиков я бы хотел использовать цель war: exploaded, но только копировать измененные ресурсы. Есть ли способ сделать это?

Я просматривал документы и не смог найти способ сделать это в текущих версиях, но раньше (в старой версии maven 1.x) было свойство maven.war.resources . overwrite, который позволил бы это.

Спасибо.

Ответы [ 2 ]

1 голос
/ 24 мая 2011

Я не знаю, как сделать это с помощью плагина maven-war-plugin, но если ваша IDE поддерживает его, вы можете внести изменения в автоматическое развертывание IDE. Например, платформа Web Tools для Eclipse поддерживает эту функцию для Tomcat . Однако, если ваш процесс сборки сложен или делает что-то странное до запуска maven-war-plugin, это может не сработать.

Второй вариант: если вы работаете в Linux, настройте rsync для копирования недавно измененных файлов в ваш контейнер сервлета. Сотрудник сделал это, синхронизировав каталог веб-приложения контейнера сервлета с выходным каталогом проекта Eclipse, и это сработало хорошо (просто измените код, Eclipse создаст его автоматически, а rsync скопирует ваши изменения).

0 голосов
/ 14 декабря 2012

Для этого я использую 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: 2.1-alpha-1: взорвался

В результате только измененные файлы будут перекомпилированы, а только перекомпилированные файлы будут заменены в каталоге tomcat webapp.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...