wake-up-neo.net

Maven - Generiere Krug und Krieg

Ich habe ein CXF WS-Projekt, das ich in einem anderen Projekt verwenden würde. Ich würde dieses WS in einem Webprojekt verwenden, weiß aber nicht, wie eine Jar-Datei erzeugt wird.

Haben Sie eine Idee oder ein Beispiel?

Vielen Dank

19
Mohamed

Das Maven-War-Plugin unterstützt das Erstellen eines separaten Artefakts, das nur die Klassen enthält.

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

Siehe den Parameter 'attachClasses'. Es ist nicht notwendig, das Jar-Plugin hinzuzufügen oder die Verpackung zu beschädigen. Fügen Sie einfach das War Plugin zu PluginManagement hinzu und schalten Sie dieses ein.

Ich befürchte jedoch, dass dies nicht das ist, was Sie wollen. Um einen CXF-Webdienst in Anspruch zu nehmen, benötigen Sie einen Client. Um einen Client zu erhalten, befolgen Sie die Anweisungen in den CXF-Beispielen zum Generieren und Verwenden von Clientstubs. Dafür brauchst du ein eigenes Projekt.

30
bmargulies

Versuchen Sie, dies in Ihren Build-Abschnitt einzufügen:

<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>

Fügen Sie pom.xml des Kriegsprojekts Folgendes hinzu.

<attachClasses>true</attachClasses> zur Konfiguration des War Plugins

<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>

Fügen Sie Folgendes zu pom.xml des Projekts hinzu, in das Sie jar of war-Projekt importieren möchten

<classifier>classes</classifier> zum Abhängigkeitsimport

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

Dies ist eine Möglichkeit, dies über die Eigenschaft ..__ zu erreichen. Standardmäßig wird eine Kriegsdatei generiert.

mvn install -Dp.type=jar

pom.xml

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

Das sollte funktionieren: 

<!-- 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>

Entnommen aus diesem Blog .

5
aliopi

mvn package, es sei denn, Ihre Projektverpackung ist etwas anderes als jar. Dann müssten Sie eine Ausführung hinzufügen des jar plugin hinzufügen, wie auf der Plugins-Verwendungsseite beschrieben, und wie die erste Antwort zeigt. Besser noch, wenn es kein Glas ist, teilen Sie es in zwei Module auf: das eine ist ein Glas, das Ihren wiederverwendbaren Code enthält, und das andere ist das, was ihn verwendet.

2
Ryan Stewart

Dies erreichen Sie am besten, wenn Sie das Plugin Maven Assembly verwenden. Dadurch können Sie auch den endgültigen Namen der Dose steuern: 

Fügen Sie das folgende Plugin in Ihrer pom.xml hinzu:

     <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>

Sie können das Projekt schließlich mit dem folgenden Befehl erstellen:

mvn clean package Assembly: Einzelinstallation

1
Gaurav

In Anbetracht Ihres maven Projektpakets für den Krieg 

<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>

fügen Sie dem maven-install-plugin die folgenden Ausführungen hinzu

    <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