maven-gwt-plugin и упаковка в JAR

Я переписываю устаревший сценарий сборки проекта Spring с Ant на Maven. В проекте есть несколько модулей GWT, каждый из которых скомпилирован в JAR. Текущая структура проекта состоит из нескольких модулей Maven, что примерно так: mainProject |- AnalyzerGWT <-- this module uses GWT |- analyzer <-- this doesn't |- someOtherModule |- p4you-spring <-- this module has resources and builds WAR

Каждый модуль, использующий GWT, имеет следующий код в файле pom.xml (модуль называется AnalyzerGWT):

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>gwt-maven-plugin</artifactId>
            <version>2.5.1</version>
            <configuration>
                <gwtSdkFirstInClasspath>true</gwtSdkFirstInClasspath>
                <compileSourcesArtifacts>
                    <artifact>com.pamm:portal-common</artifact>
                    <artifact>com.pamm:analyzer</artifact>
                </compileSourcesArtifacts>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>compile</goal>
                        <goal>test</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

Он успешно компилируется, и результирующие ресурсы GWT сохраняются в AnalyzerGWT/target/AnalyzerGWT-1.0/com.pamm.analyzer.gwt.Analyzer/, однако содержимое этого каталога не включается в результирующий JAR-файл.

Есть ли элегантный способ скопировать содержимое этого каталога в корневой путь JAR?


person yuiu    schedule 09.11.2015    source источник
comment
Я думаю, вы должны собрать и установить эти модули GWT, а затем добавить зависимости в свой военный проект.   -  person Ajhar Shaikh    schedule 09.11.2015


Ответы (2)


Мне удалось решить проблему, добавив:

   <plugin>       
         <artifactId>maven-resources-plugin</artifactId>
            <version>2.5</version>
            <executions>
                <execution>
                    <id>copy-resources</id>
                    <phase>prepare-package</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${project.build.outputDirectory}</outputDirectory>
                        <resources>
                            <resource>
                                <directory>
                                    ${project.build.directory}/AnalyzerGWT-1.0/com.pamm.analyzer.gwt.Analyzer/
                                </directory>
                                <filtering>false</filtering>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
    </plugin>

в раздел <plugins> файла pom.xml.

person yuiu    schedule 10.11.2015

Файлы в этой папке, скорее всего, представляют собой javascript, созданный компилятором GWT, и поэтому вам, вероятно, лучше упаковать модуль в виде файла WAR.

<packaging>war</packaging>

а Maven сделает все остальное за вас.

Ваше здоровье,

person Anders R. Bystrup    schedule 09.11.2015
comment
Спасибо за ваш ответ. Однако это не помогает. В проекте несколько модулей и каждый из них должен быть скомпилирован в JAR. Все эти JAR-файлы упакованы в WAR с помощью maven-war-plugin, определенного в отдельном модуле. Структура примерно такая: - person yuiu; 09.11.2015
comment
Не успел написать 5 минут: Родительский проект: mediaMonitor, модули: AnalyzerGWT, analyzer, некоторые другие модули, p4you-spring - модуль с ресурсами, который компилирует WAR. - person yuiu; 09.11.2015
comment
Как насчет военных оверлеев? - person Thomas Broyer; 09.11.2015
comment
Я все еще не могу отделаться от мысли, что вы подходите к этому неправильно. Поскольку AnalyzerGWT генерирует JavaScript, это должно быть WAR. Ничто не мешает вам создать две WAR и упаковать их в EAR или около того для развертывания. Оверлеи WAR в первую очередь предназначены для совместного использования ресурсов между несколькими WAR... - person Anders R. Bystrup; 10.11.2015
comment
@AndersR.Bystrup Я знаю об этом, но я ограничен текущим макетом проекта. Мне не разрешено его менять. - person yuiu; 10.11.2015