web-dev-qa-db-fra.com

Maven ajoutant mainClass dans pom.xml avec le bon chemin de dossier

Je veux obtenir un fichier jar de travail avec mon projet maven.

La partie construction est:

<build>
    <plugins>
        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-checkstyle-plugin</artifactId>
            <version>2.14</version>
            <dependencies>
                <dependency>
                    <groupId>com.puppycrawl.tools</groupId>
                    <artifactId>checkstyle</artifactId>
                    <version>6.4.1</version>
                </dependency>
            </dependencies>
            <configuration>
                <consoleOutput>true</consoleOutput>
                <configLocation>${basedir}/src/test/resources/checkstyle_swt1.xml</configLocation>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-Assembly-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <descriptor>src/Assembly/src.xml</descriptor>
            </configuration>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

    </plugins>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.Apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.0</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                    <archive>
                        <manifest>
                            <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                            <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                            <addClasspath>true</addClasspath>
                            <mainClass>org.jis.Main</mainClass>                                
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

Mon problème actuel est que je ne sais pas comment implémenter la classe principale correctement dans mon fichier pom.xml et, plus tard, dans mon fichier jar. Java Mais si j'ajoute la ligne suivante

<mainClass>src.main.Java.org.jis.Main</mainClass>

ça ne marche pas.

Merci d'avance

23
NhatNienne

Tout d'abord, votre classe principale n'inclut pas src/main/Java. Regardez la déclaration du paquet dans ce fichier Java. Par exemple, package org.jis;, ajoutez ensuite la classe principale à cela. En d'autres termes, c'est seulement org.jis.Main

Vous devez configurer maven-jar-plugin à la place de maven-compiler-plugin. Le jar-plugin est celui qui est responsable du packaging et de la création du manifeste.MF. 

De http://maven.Apache.org/shared/maven-archiver/examples/classpath.html

  <build>
    <plugins>
      <plugin>
        <groupId>org.Apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        ...
        <configuration>
          <archive>
            <manifest>
              <addClasspath>true</addClasspath>
              <mainClass>fully.qualified.MainClass</mainClass>
            </manifest>
          </archive>
        </configuration>
        ...
      </plugin>
    </plugins>
  </build>
41
Martin Baumgartner

Vous devez utiliser le nom complet de votre classe principale:

<mainClass>org.jis.Main</mainClass>
0
Dagriel

Fondamentalement, Maven est un framework qui a une collection de plug-ins maven pour chaque action effectuée pour construire un projet.

Chaque phase de construction est effectuée par le plug-in maven correspondant à l'aide de la description du projet Project Object Model (POM)  

Donc, le plugin maven-compiler est juste responsable de la compilation du projet et il ne créera pas le fichier manifeste.

maven-jar-plugin est responsable de la création du fichier manifeste du projet.

0
tinku