web-dev-qa-db-fra.com

Créer une bibliothèque Jar sans classe principale

Aujourd'hui, je viens de créer une bibliothèque Java. Je l'ai créée à l'aide d'une classe Main, car IntelliJ IDEA 14 m'a demandé d'en ajouter une. Cependant, je le souhaite) être une bibliothèque normale, sans classes principales. Est-il possible de créer un fichier jar à partir d'un tel projet sans avoir une seule classe avec la méthode main? Si oui, comment créer un tel jar.

Il semble juste un peu idiot d'avoir une méthode principale si vous ne l'utilisez jamais.

17
Thibstars

Vous pouvez le faire de plusieurs façons, par exemple à partir de la ligne de commande, de l'EDI, de maven ou d'un autre outil de construction, je décris 2 façons:

Ligne de commande:

Vous pouvez créer un fichier jar à partir de la ligne de commande (sans IDE), voici la référence: https://docs.Oracle.com/javase/tutorial/deployment/jar/build.html

jar cf jar-file input-file(s)

jar-file est le nom de fichier .jar que vous souhaitez et input-file(s) sont les fichiers que vous souhaitez placer dans votre bibliothèque (peut être un caractère générique, par exemple: *.class)

Idée Intellij:

Créez un artefact comme dans cet article, mais sans spécifier la classe principale http://blog.jetbrains.com/idea/2010/08/quickly-create-jar-artifact/

Cliquez ensuite sur Build> Build artifact> Build.

Cela fonctionne même s'il n'y a pas de classe principale.

2
dey

Utilisez un outil de construction comme Maven (pas de dépendances IDE mais peut être appelé depuis IDE pour plus de commodité) avec le plugin d'ombre pour créer un JAR 'uber' (qui inclut toutes les dépendances nécessaires dans un JAR final pour le projet) ...

"pom.xml"

...

  <plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>2.3</version>
    <executions>
       <!-- Run shade goal on package phase -->
      <execution>
        <phase>package</phase>
        <goals>
          <goal>shade</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

Documentation du plugin Shade:

https://maven.Apache.org/plugins/maven-shade-plugin/

4
Darrell Teague