Ваадин: как добавить META-INF/services к войне?
у меня есть веб-проект Vaadin 7 maven, который имеет некоторые аннотации, которые создают определение службы на META-INF/services
.
Я добавил Это в pom, поэтому аннотации обрабатываются:
<!-- Run annotation processors on src/main/java sources -->
<plugin>
<groupId>org.bsc.maven</groupId>
<artifactId>maven-processor-plugin</artifactId>
<version>3.3.1</version>
<executions>
<execution>
<id>process</id>
<goals>
<goal>process</goal>
</goals>
<phase>generate-sources</phase>
</execution>
</executions>
</plugin>
файлы отображаются в target/classes/META-INF/services
но не доживите до последней войны.
Я попытался добавить папку в Maven-war-plugin следующим образом:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
<packagingIncludes>target/classes/*</packagingIncludes>
</configuration>
</plugin>
но тогда большинство файлов Vaadin не попадают в войну, и это не работает. Есть идеи?
3 ответов
можно найти https://maven.apache.org/plugins/maven-war-plugin/usage.html
похоже на ваш находится в .
обычно при создании WAR
вы создадите каталог src/main/webapp
где вы можете иметь свой WEB-INF
, META-INF
и другие необходимые папки.
|-- src
| `-- main
| |-- java
| | `-- com
| | `-- example
| | `-- projects
| | `-- SampleAction.java
| |-- resources
| | `-- images
| `-- webapp
| |-- META-INF
| |-- WEB-INF
все от webapp
папка будет скопирована в корневой каталог в WAR
.
путь к webapp
также можно настроить с помощью warSourceDirectory свойства
для ваших сгенерированных сценарием источников
очевидно, вы не хотите, чтобы ваши сгенерированные источники в вашем src/*
folder и не хотят его версии.
вы можете обойти это, добавив фильтр игнорирования в метаданные управления версиями; или создав символическую ссылку; или используя copy-resources
как говорили некоторые предыдущие ответы, но не рекомендуемый.
вы можете достичь этого, добавив webResources
настройки скопировать сгенерированный источники на
см. http://maven.apache.org/plugins/maven-war-plugin/examples/adding-filtering-webresources.html
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webResources>
<resource>
<directory>${project.build.directory}/target/generated-sources</directory>
<targetPath>META-INF</targetPath> <!-- introduced in plugin v 2.1 -->
<includes>
<include>*.class</include>
</includes>
</resource>
</webResources>
</configuration>
</plugin>
вы можете попробовать это:
<execution>
<id>process</id>
<phase>generate-sources</phase>
<goals>
<goal>process</goal>
</goals>
<configuration>
<finalName>${projectId}</finalName>
<outputDirectory>relative project directory</outputDirectory>
<includes>
<include>path</include>
</includes>
</configuration>
</execution>
Я в конечном итоге использовал подход из этого несвязанного ответа:Maven: включить папку в папку ресурсов в war build.
вот что я делал:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
<webResources>
<resource>
<directory>target/classes/META-INF/services</directory>
<includes>
<include>*.*</include>
</includes>
<targetPath>META-INF/services</targetPath>
</resource>
</webResources>
</configuration>
</plugin>
в основном добавлена папка services в качестве ресурса и помещена в нужное место финальной войны.