Подтвердить что ты не робот

Maven: Где разместить сгенерированные ресурсы для tomcat-maven-plugin?

У меня есть файлы CSS и JavaScript в каталоге src/main/webapp моего проекта. Я хочу присоединиться к объединенной и уменьшенной версии этих ресурсов в мой WAR файл и в место, где tomcat-maven-plugin выбирает его.

Я использовал yuicompressor-maven-plugin для создания файлов и поместил его в ${project.build.directory}/${project.build.finalName}. Он отлично работает для пакета maven, и эти ресурсы попадают в WAR файл, но как-то tomcat-maven-plugin этого не видит. Должен ли я использовать для него другой каталог?

Мой pom:

    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>tomcat-maven-plugin</artifactId>
            <version>1.1</version>
            <configuration>
                <path>/MyApp</path>
                <warDirectory>${project.build.directory}/${project.build.finalName}</warDirectory>
            </configuration>
        </plugin>
        <plugin>
            <version>2.5.1</version>
            <inherited>true</inherited>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
                <optimize>true</optimize>
                <debug>true</debug>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.5</version>
            <configuration>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.2</version>
            <configuration>
                <webResources>
                    <resource>
                        <directory>${basedir}/src/main/resources/META-INF</directory>
                        <filtering>true</filtering>
                        <targetPath>META-INF</targetPath>
                        <includes>
                            <include>context.xml</include>
                        </includes>
                    </resource>
                </webResources>
                <archive>
                    <addMavenDescriptor>false</addMavenDescriptor>
                    <manifest>
                        <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                        <addClasspath>true</addClasspath>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
        <plugin>
            <groupId>net.alchim31.maven</groupId>
            <artifactId>yuicompressor-maven-plugin</artifactId>
            <version>1.3.0</version>
            <executions>
                <execution>
                    <phase>process-resources</phase>
                    <configuration>
                        <excludes>
                            <exclude>**/*</exclude>
                        </excludes>
                        <aggregations>
                            <aggregation>
                                <output>${project.build.directory}/${project.build.finalName}/js/commons-pack.js</output>
                                <includes>
                                    <include>${project.build.sourceDirectory}/../webapp/js1.js</include>
                                    <include>${project.build.sourceDirectory}/../webapp/js2.js</include>
                     ...

Что мне делать, чтобы mvn tomcat:run также забрать мои сгенерированные файлы?

4b9b3361

Ответ 1

Используйте warSourceDirectory:

<warSourceDirectory>${project.build.directory}/${project.build.finalName}</warSourceDirectory>

Вместо этого свойства конфигурации (warDirectory) для tomcat-maven-plugin:

<warDirectory>${project.build.directory}/${project.build.finalName}</warDirectory>

Согласно документации tomcat-maven-plugin, warSourceDirectory - это то, где веб-ресурсы берутся, а его значение по умолчанию ${basedir}/src/main/webapp. Это означает, что если вы не установите это свойство, вам нужно сгенерировать ваш унифицированный/мини файл JavaScript под ${basedir}/src/main/webapp.

Если вы установите warSourceDirectory в выходную папку, это означает, что вам нужно сгенерировать этот файл перед запуском Tomcat.

Ответ 2

В качестве альтернативы вы также можете использовать цель run-war вместо run, например. mvn tomcat6:run-war. Это будет использовать взорванную войну в вашем каталоге сборки (и, таким образом, фильтрованные ресурсы). См. этот сайт. Существует также run-war-only, который пропускает фазу упаковки.

Ответ 3

Обратите внимание, что плагин теперь поддерживается в Apache (так что немного обновите:-)) см. http://tomcat.apache.org/maven-plugin-2.0/.

Даже при работе с установкой я не уверен, что это оптимальное решение (относительно io и времени сборки).

Прогон tomcat должен иметь возможность использовать ресурсы из более чем одного каталога (я не уверен, что это возможно с текущим вложением tomcat api).

Можете ли вы добавить запрос функции здесь https://issues.apache.org/jira/browse/MTOMCAT

Спасибо