2011-10-03 4 views
3

J'ai un projet maven avec beaucoup de dépendances. Je veux emballer tout dans un pot avec dépendance en utilisant le plugin d'assemblage, mais je ne vais pas tous les jarres de dépendances décompressé dans un gros désordre. Je veux que tout le monde passe dans le dossier lib, mais je ne sais pas comment ajouter le chemin de la classe. mon pom:maven assembly crée jar avec dépendance et chemin de classe

<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>test.com</groupId> 
    <artifactId>simple-weather</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>simple-weather</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>1.2.14</version> 
     </dependency> 
     <dependency> 
      <groupId>dom4j</groupId> 
      <artifactId>dom4j</artifactId> 
      <version>1.6.1</version> 
     </dependency> 
     <dependency> 
      <groupId>jaxen</groupId> 
      <artifactId>jaxen</artifactId> 
      <version>1.1.1</version> 
     </dependency> 
     <dependency> 
      <groupId>velocity</groupId> 
      <artifactId>velocity</artifactId> 
      <version>1.5</version> 
     </dependency> 
     <dependency> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>exec-maven-plugin</artifactId> 
      <version>1.2</version> 
     </dependency> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>3.8.1</version> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>1.6</source> 
        <target>1.6</target> 
       </configuration> 
      </plugin> 

        <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-jar-plugin</artifactId> 

      <configuration> 
       <archive> 
        <manifest> 
         <addClasspath>true</addClasspath> 
         <classpathPrefix>lib/</classpathPrefix> 
         <mainClass>adi.com.weather.Main</mainClass> 
        </manifest> 
       </archive> 
      </configuration> 

     </plugin> 

      <plugin> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <executions> 
        <execution> 
         <id>make-assembly</id> 
         <phase>package</phase> 
         <goals> 
          <goal>attached</goal> 
         </goals> 
        </execution> 
       </executions> 
       <configuration> 
        <descriptors> 
         <descriptor>package.xml</descriptor> 
        </descriptors> 
       </configuration> 

      </plugin> 


     </plugins> 
    </build> 
</project> 

mon fichier de montage

<?xml version="1.0" encoding="UTF-8"?> 
<assembly> 
    <id>test5</id> 
    <formats> 
     <format>jar</format> 
    </formats> 
    <includeBaseDirectory>false</includeBaseDirectory> 
    <dependencySets> 
     <dependencySet> 
      <unpack>false</unpack> 
      <scope>runtime</scope> 
      <outputDirectory>lib</outputDirectory> 
     </dependencySet> 
    </dependencySets> 
    <fileSets> 
     <fileSet> 
      <directory>${project.build.outputDirectory}</directory> 
      <outputDirectory>/</outputDirectory> 

     </fileSet> 

    </fileSets> 
</assembly> 
+0

On dirait que vous avez les bonnes entrées pom. Où est le problème? Les pots ne vont pas dans le dossier lib? Manifeste ayant un chemin incorrect des pots? – Raghuram

+0

le classPath dans le manifeste ne fonctionnait pas bien, mais j'ai trouvé une soulution –

+3

Beau travail Adi Mor. Pouvez-vous s'il vous plaît poster une réponse à la question vous-même et ensuite accepter cette réponse afin que nous puissions clôturer cette question? En outre, vous devez accepter les réponses aux questions précédentes si elles corrigent votre problème. – Zecas

Répondre

0

Il a été reconfiguré probablement son plugin dépendance Maven:

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <version>2.10</version> 
      <executions> 
       <execution> 
        <id>copy</id> 
        <phase>package</phase> 
        <goals> 
         <goal>copy-dependencies</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>${distDirectory}/lib</outputDirectory> 
         <includeScope>runtime</includeScope> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

Maintenant, quand votre course mvn package, tous vos pots de dépendance ira à target/lib (ou quel que soit votre distDirectory).

HTH

0

Si maven-plugin-pot ne génère pas la classe Chemin d'entrée dans le fichier manifeste bien que vous avez défini <addClasspath>true</addClasspath>, assurez-vous que vous utilisez la version 2.2 ou plus récente du plug-in.

Il semble que le bogue MJAR-83 dans la version 2.1 empêchait le plugin de répertorier les dépendances dans Class-Path.

Questions connexes