2017-03-27 1 views
1

J'essaye de créer un assemblage (un pot exécutable, c'est-à-dire), et j'aimerais que tous les pots EXTERNES soient inclus dans mon assemblage au format "pot", plutôt que les classes de Le pot externe est sorti et fait partie de mon fichier jar "runnable". J'ai essayé d'utiliser l'option "unpack" (le définir sur false) dans le fichier d'assemblage mais cela crée d'autres problèmes, comme, ne génère pas les fichiers CLASS pour mon projet, sans parler des fichiers jar externes. Donc, je fais vraiment quelque chose de mal. L'aide serait grandement appréciée. Informations POM et ASSEMBLAGE ci-dessous. MerciMaven Assemblage avec jar externe

Voici un extrait de mon fichier POM.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <configuration> 
     <descriptors> 
      <descriptor>src/assembly/assemblyinfo.xml</descriptor> 
     </descriptors> 
     <archive> 
      <manifest> 
       <mainClass>com.company.sample</mainClass> 
      </manifest> 
     </archive> 
    </configuration> 
    <executions> 
     <execution> 
      <phase>package</phase> 
      <goals> 
       <goal>single</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin>   

Et voici assemblyinfo.xml

<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0     http://maven.apache.org/xsd/assembly-2.0.0.xsd"> 
    <id>FULL</id> 
    <formats> 
    <format>jar</format> 
    </formats> 
    <includeBaseDirectory>false</includeBaseDirectory> 
    <dependencySets> 
    <dependencySet> 
     <outputDirectory>/</outputDirectory> 
     <useProjectArtifact>true</useProjectArtifact> 
     <unpack>true</unpack> 
     <scope>runtime</scope> 
    </dependencySet> 
    </dependencySets> 
</assembly> 

Répondre

0
<build> 
     <plugins> 
      <plugin> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <version>2.6</version> 
       <configuration> 
        <descriptorRefs> 
         <descriptorRef>jar-with-dependencies</descriptorRef> 
        </descriptorRefs> 
        <archive> 
         <manifest> 
          <mainClass>com.evermore.talos.services.ttservice.ttstarter.UIStartup</mainClass> 
         </manifest> 
        </archive> 
       </configuration> 
       <executions> 
        <execution> 
         <id>make-assembly</id> <!-- this is used for inheritance merges --> 
         <phase>compile</phase> <!-- bind to the packaging phase --> 
         <goals> 
          <goal>single</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <artifactId>maven-resources-plugin</artifactId> 
       <version>2.7</version> 
       <dependencies> 
        <dependency> 
         <groupId>org.apache.maven.shared</groupId> 
         <artifactId>maven-filtering</artifactId> 
         <version>1.3</version> 
        </dependency> 
       </dependencies> 
       <executions> 
        <execution> 
         <id>copy-resources</id> 
         <!-- here the phase you need --> 
         <phase>package</phase> 
         <goals> 
          <goal>copy-resources</goal> 
         </goals> 
         <configuration> 
          <outputDirectory>${basedir}/target/release</outputDirectory> 
          <resources> 
           <resource> 
            <directory>src/main/resources</directory> 
            <filtering>true</filtering> 
           </resource> 
           <resource> 
            <directory>target</directory> 
            <includes> 
             <include>*-dependencies.jar</include> 
            </includes> 
           </resource> 
          </resources> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 

     </plugins> 
    </build> 

Plese référer ce paramètre build Maven. C'est ainsi que nous construisons un fichier exécutable avec toutes les dépendances.

+0

Merci Shineed. Appréciez votre réponse rapide. J'essaie d'éviter "jar-with-dependencies" decscriptorRef et la raison en est que je voudrais être capable de donner mon propre "nom" pour l'assemblage. Par exemple, dans assemblyinfo.xml, vous voyez le nom FULL. il ajoute le "_FULL" à la fin du fichier jar. Ainsi, le fichier JAR final sera comme MyZookeeperexample_1_FULL.jar au lieu de "MyZookeeperexample_1_jar-with-dependencies.jar" – user3221045

+0

De plus, lorsque vous utilisez "jar-with-dependency", les fichiers JAR externes sont "déballés", ce qui signifie que vous vous retrouvez avec un tas de fichiers CLASS et c'est exactement ce que j'essaie d'éviter. – user3221045