web-dev-qa-db-fra.com

Maven - Générez Jar et War

J'ai un projet WS CXF que je voudrais utiliser dans un autre projet, je consommerais ce WS dans un projet Web mais je ne sais pas comment générer un fichier JAR.

S'il vous plaît avez-vous une idée ou un exemple?

Je vous remercie

19
Mohamed

Le plug-in maven-war-plugins prend en charge la création d'un artefact distinct contenant uniquement les classes.

http://maven.Apache.org/plugins/maven-war-plugin/war-mojo.html

Voir le paramètre 'attachClasses'. Inutile d'ajouter le plugin jar ou de manipuler l'emballage. Ajoutez simplement le plugin war à pluginManagement et activez-le.

Cependant, je crains que ce ne soit pas ce que vous souhaitiez. Pour utiliser un service Web CXF, vous avez besoin d'un client. Pour obtenir un client, suivez les instructions des exemples CXF pour générer et utiliser des stubs clients. Vous voudrez un projet Maven distinct pour cela.

30
bmargulies

Essayez d'ajouter ceci dans votre section de construction:

<build>
  <plugins>
    <plugin>
      <groupId>org.Apache.maven.plugins</groupId>
      <artifactId>maven-jar-plugin</artifactId>
      <executions>
        <execution>
          <id>make-a-jar</id>
          <phase>compile</phase>
          <goals>
            <goal>jar</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

Ajoutez ce qui suit à pom.xml du projet de guerre.

<attachClasses>true</attachClasses> à la configuration du plugin war

<groupId>com.yourorg.foobar</groupId>
<artifactId>hello-world</artifactId>
<packaging>war</packaging>
<version>1.0</version>
<name>hello</name>

<build>
    <plugins>
        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>3.0.0</version>
            <configuration>
                <attachClasses>true</attachClasses>
            </configuration>
        </plugin>
    </plugins>
</build>

Ajouter ce qui suit au pom.xml du projet où vous voulez importer le projet jar of war

<classifier>classes</classifier> à l'importation de dépendance

<dependency>
    <groupId>com.yourorg.foobar</groupId>
    <artifactId>hello-world</artifactId>
    <version>1.0</version>
    <classifier>classes</classifier>
</dependency>
11
Nilesh

C'est un moyen d'y parvenir, via la propriété .. Par défaut, un fichier war est généré, et lorsque vous voulez que le fichier jar définisse la propriété.

mvn install -Dp.type=jar

pom.xml

<properties>
   <p.type>war</p.type>
</properties>
<packaging>${p.type}</packaging>
6
Daniel De León

Cela devrait fonctionner: 

<!-- Maven JAR plugin -->
<plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <executions>
        <execution>
            <id>jar-services-provided</id>
            <phase>compile</phase>
            <goals>
                <goal>jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>

<!-- Install the jar locally -->
<plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-install-plugin</artifactId>
    <executions>
        <execution>
            <phase>install</phase>
            <goals>
                <goal>install-file</goal>
            </goals>
            <configuration>
                <packaging>jar</packaging>
                <artifactId>${project.artifactId}</artifactId>
                <groupId>${project.groupId}</groupId>
                <version>${project.version}</version>
                <file>
                    ${project.build.directory}/${project.artifactId}-${project.version}.jar
                </file>
            </configuration>
        </execution>
    </executions>
</plugin>

Tiré de ce blog .

5
aliopi

mvn package sauf si l'empaquetage de votre projet est autre chose que jar. Ensuite, vous aurez besoin de ajouter une exécution du plugin jar , comme décrit sur la page d'utilisation du plugin et comme l'a montré la première réponse. Mieux encore, si ce n'est pas un bocal, divisez-le en deux modules: l'un est un bocal contenant votre code réutilisable et l'autre la chose qui l'utilise.

2
Ryan Stewart

Le meilleur moyen d'y parvenir est d'utiliser le plugin Maven Assembly. Vous pouvez également contrôler le nom final du pot: 

Ajoutez le plugin suivant dans votre pom.xml:

     <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-Assembly-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <descriptors>
                    <descriptor>Assembly.xml</descriptor>
                </descriptors>
                <finalName>${artifactId}-${version}</finalName>
                <appendAssemblyId>false</appendAssemblyId>
            </configuration>
        </plugin>

Assembly.xml:

<Assembly xmlns="http://maven.Apache.org/plugins/maven-Assembly-plugin/Assembly/1.1.0" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.Apache.org/plugins/maven-Assembly-plugin/Assembly/1.1.0 http://maven.Apache.org/xsd/Assembly-1.1.0.xsd">
  <id>model</id>
  <formats>
    <format>jar</format>
  </formats>
  <includeBaseDirectory>false</includeBaseDirectory>
  <fileSets>
    <fileSet>
      <directory>${project.build.outputDirectory}</directory>
      <outputDirectory>/</outputDirectory>
      <includes>
        <include>**/*</include>
      </includes>
    </fileSet>
  </fileSets>
</Assembly>

Vous pouvez enfin construire le projet avec la commande ci-dessous:

paquet propre mvn Assemblée: installation unique

1
Gaurav

Considérant que votre projet maven passe à la guerre 

<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>com.sample</groupId>
    <artifactId>sample</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>

ajoute les exécutions suivantes à maven-install-plugin

    <plugin>
        <groupId>org.Apache.maven.plugins</groupId>
        <artifactId>maven-install-plugin</artifactId>
        <version>2.5.2</version>
        <executions>
            <execution>
                <phase>package</phase>
                <configuration>
                    <packaging>jar</packaging>
                    <file>${project.build.directory}\${artifactId}-${version}.jar</file>
                </configuration>
                <goals>
                    <goal>install-file</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
0
myset