Ваадин: как добавить 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 в качестве ресурса и помещена в нужное место финальной войны.
