2012-12-15 2 views
1

Я пытаюсь построить (военный) проект, где я скопировал и модифицировал файл pom.xml из другого фрагмента кода и по какой-то причине когда I mvn clean package программное обеспечение не включает классы в ассоциированный файл * -classes.jar. Версия Maven - 2.2.1 на Ubuntu 12.10.maven 2.2 war build не помещает классы в ассоциированный файл * -classes.jar

Я очень новичок в maven и в значительной степени управляюсь копированием и вставкой из примеров, поэтому я в принципе не знаю, как работает мой pom (он полностью включен ниже).

Проект имеет <packaging>war</packaging> элемент, а секция maven-war-plugin конфигурация говорит archiveClasses и attachClasses, который я предполагаю, что это приводит к тому, * -classes.jar файл, который будет построен. После того, как я запустить сборку, мой целевой каталог выглядит следующим образом:

[email protected]:~/Code/External/JavaServer2.0/target$ ls 
apidocs generated-sources surefire   sword2-server-1.0-classes.jar sword2-server-1.0-sources.jar 
classes maven-archiver  sword2-server-1.0 sword2-server-1.0-javadoc.jar sword2-server-1.0.war 

Но sword2-сервер-1,0-classes.jar не содержит какой-либо из классов:

[email protected]:~/Code/External/JavaServer2.0/target$ jar tf sword2-server-1.0-classes.jar 
META-INF/ 
META-INF/MANIFEST.MF 
META-INF/maven/ 
META-INF/maven/org.swordapp/ 
META-INF/maven/org.swordapp/sword2-server/ 
META-INF/maven/org.swordapp/sword2-server/pom.xml 
META-INF/maven/org.swordapp/sword2-server/pom.properties 

Между тем все остальные файлы * .jar в этом каталоге содержат всю необходимую информацию для исходных файлов (javadocs, source и т. д.).

Я, без сомнения, пропустил какую-то конфигурацию плагинов, но до сих пор не могу понять смысл документации плагина maven, поэтому любая помощь чрезвычайно ценится.

The (почти) полный pom.xml (опущено фактические зависимости для краткости):

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 

<modelVersion>4.0.0</modelVersion> 
<groupId>org.swordapp</groupId> 
<artifactId>sword2-server</artifactId> 
<version>1.0</version> 
<packaging>war</packaging> 

<name>SWORD v2 :: Common Server Library</name> 
<description> 
    Common Server Library with interfaces to be implemented by servers 
    wishing to provide SWORD v2 support 
</description> 
<url>http://www.swordapp.org/</url> 

<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-release-plugin</artifactId> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
      <configuration> 
       <source>6</source> 
       <target>6</target> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jar-plugin</artifactId> 
      <configuration> 
       <archive> 
        <manifest> 
         <addDefaultImplementationEntries> 
          true 
         </addDefaultImplementationEntries> 
         <addDefaultSpecificationEntries> 
          true 
         </addDefaultSpecificationEntries> 
        </manifest> 
       </archive> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-source-plugin</artifactId> 
      <executions> 
       <execution> 
        <id>default</id> 
        <phase>package</phase> 
        <goals> 
         <goal>jar</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-javadoc-plugin</artifactId> 
      <executions> 
       <execution> 
        <id>default</id> 
        <phase>package</phase> 
        <goals> 
         <goal>jar</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <configuration> 
       <archiveClasses>true</archiveClasses> 
       <attachClasses>true</attachClasses> 
       <packagingExcludes>WEB-INF/lib/*.jar</packagingExcludes> 
       <warSourceExcludes>WEB-INF/lib/*.jar</warSourceExcludes> 
       <webResources> 
        <resource> 
         <filtering>true</filtering> 
         <directory>${basedir}/src/main/webapp</directory> 
         <includes> 
          <include>WEB-INF/web.xml</include> 
         </includes> 
        </resource> 
       </webResources> 
      </configuration> 
      <executions> 
       <execution> 
        <phase>prepare-package</phase> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

<dependencies> 
    .... 
</dependencies> 
</project> 

ответ

5

оказывается, archiveClasses и attachClasses не играют хорошо вместе. В документации для attachClasses говорится, что он будет помещать файлы в каталог webapps classes в * -classes.jar во время сборки войны. Но archiveClasses размещает содержимое каталога classes в webapp в файле jar в каталоге lib. Так как это означает, что в каталоге classes нет классов, которые будут помещены в * -classes.jar, если оба эти флажка конфигурации установлены в true.

Ответ заключается в том, чтобы удалить archiveClasses из конфигурации, а затем все будет вести себя так, как ожидалось.

Это кажется, что это, вероятно, Maven ошибка, и она ведет себя так же как в Maven 2 и 3. Maven

+0

Совершенная. Благодарю. –

3

Вы должны попытаться сводиться проблему за счет уменьшения сложности попробуйте простую конфигурацию следующим первым:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <configuration> 
     <archiveClasses>true</archiveClasses> 
     <attachClasses>true</attachClasses> 
    </configuration> 
</plugin> 

После этого попробуйте:

mvn clean package 
+2

Даже это просто создает пустой sword2-сервер-1,0-classes.jar файл, к сожалению –

Смежные вопросы