2013-06-19 3 views
1

У меня есть следующие POMMaven война упаковка, включает в себя классы игнорирует исключенные ресурсы

<project> 

    .... 
    <packaging>war</packaging> 
    .... 
    <build> 
     <plugins> 
      <plugin> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jar-plugin</artifactId> 
      <configuration> 
       <excludes> 
        <exclude>config/**/*</exclude> 
       </excludes> 
      </configuration> 
     </plugin> 

     <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.3</version> 
    <configuration> 
     <archiveClasses>true</archiveClasses> 
        <warSourceExcludes>WEB-INF/sass/**</warSourceExcludes> 
        <attachClasses>true</attachClasses> 
        <webResources> 
         <resource> 

          <directory>src/main/resources/config</directory> 

          <excludes> 
           <exclude>**/*</exclude> 
          </excludes> 
         </resource> 
        </webResources> 
    </configuration> 
    </plugin> 
... 
</project> 

Как вы можете видеть, я ПАКЕТ войны в то время как мои .class файлов не в моей WEB-INF/classes папки - они упакованы в JAR вместо.

Теперь я отчаянно пытаюсь исключить некоторые ресурсы из моего JAR - но это не сработает. Когда я запускаю mvn jar:jar - ресурсы исключены, однако при запуске mvn package ресурсы есть.

Пожалуйста, помогите.

ответ

0

У вас нет привязки цели jar:jar к фазе жизненного цикла. Когда вы запускаете jar:jar из командной строки, исключения происходят нормально; когда вы запускаете mvn clean package Я подозреваю, что jar:jar не выполняется. Попробуйте связывание цели фазы:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <executions> 
     <execution> 
     <goals><goal>jar</goal></goals> 
     <phase>prepare-package</phase> 
     <configuration> 
      <excludes> 
       <exclude>config/**/*</exclude> 
      </excludes> 
     </configuration> 
     </execution> 
    </executions> 
</plugin> 

FYI, то archiveClasses особенность war:war plugin goal делает что-то похожее на то, что я думаю, что вы пытаетесь достичь, не требуя отдельный плагин конфигурацию.

1

Похоже, что пользователь @ user944849 прав - действительно, военный плагин не использует плагин jar для достижения упаковки JAR.

Однако его ответ дал мне неправильный результат, поскольку он просто создаст 2 баночки - один будет с ресурсами, а другой без него. ВОЙНА по-прежнему будет использовать неправильную.

Правильный ответ заключается в использовании нового тега maven resources.

Тот, который соответствует моей конфигурации выглядит следующим образом

<build> 
     .... 
     <resources> 
      <resource> 
       <directory>src/main/resources</directory> 
       <excludes> 
        <exclude>config/**/*</exclude> 
       </excludes> 
       <filtering>false</filtering> 
      </resource> 
     </resources> 
     .... 
    </build> 
Смежные вопросы