2012-06-02 17 views
16

Mam projekt CXF WS, który chciałbym użyć go w innym projekcie, chciałbym skonsumować WS w projekcie sieci Web, ale nie wiem, jak wygenerować plik Jar.Maven - Generowanie Jar i War

Proszę podać jakiś pomysł lub przykład?

Dziękuję

Odpowiedz

26

Wtyczka maven-war obsługuje tworzenie osobnego artefaktu, który zawiera tylko klasy.

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

Zobacz parametr 'attachClasses. Nie ma potrzeby dodawania wtyczki słoika ani bałaganu z opakowaniem. Po prostu dodaj wtyczkę wojenną do pluginManagement i włącz ją.

Obawiam się jednak, że to nie jest to, czego chcesz. Aby skorzystać z usługi internetowej CXF, potrzebujesz klienta. Aby uzyskać klienta, postępuj zgodnie z instrukcjami w przykładach CXF, aby dowiedzieć się, jak generować i używać kodów pośredniczących klienta. Będziesz potrzebował osobnego projektu maven.

+0

to jest ładne, ale dodanie ' klas' jest niezwykłe w tych dniach – aliopi

20

warto dodać to do swojego odcinka budowy:

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

Wydaje się, że muszę zmienić fazę na opakowaniu. Jeśli jest ustawiony na kompilację, wystąpił błąd na pom.xml. – Stony

+0

To zadziałało, ale jak byś zawarł ten * .jar wyprodukowany przez wtyczkę maven-jar w pakiecie wojennym zbudowanym przez wtyczkę maven-war? –

2

mvn package chyba że project's packaging jest coś oprócz jar. Następnie musisz add an execution z jar plugin, jak opisano na plugin's usage page i jak pokazała pierwsza odpowiedź. Co więcej, jeśli to nie jest słoik, podziel go na dwa moduły: jeden zawierający słoik zawierający kod wielokrotnego użytku, a drugi to, który go używa.

6

Jest to jeden sposób, aby to osiągnąć, za pośrednictwem nieruchomości. Domyślnie wygeneruje plik wojny, a gdy chcesz, aby jar ustawił właściwość.

mvn install -Dp.type=jar 

pom.xml

<properties> 
    <p.type>war</p.type> 
</properties> 
<packaging>${p.type}</packaging> 
5

Dodaj następujący do pom.xml projektu wojennego.

<attachClasses>true</attachClasses> do konfiguracji wojennej wtyczki

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

Dodaj następujący do pom.xml projektu, w którym chcesz importować słoik projektu wojennego

<classifier>classes</classifier> do uzależnienia od importu

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

czy istnieje sposób na zmianę nazwy pliku jar? – barha

+1

Oto odpowiedź, http://stackoverflow.com/a/14490656/4417818 – Nilesh

3

To powinno działać:

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

Zaczerpnięte z this blog.

0

Najlepszym sposobem osiągnięcia tego celu jest za pomocą wtyczki Maven złożenia przez tę można również kontrolować ostateczną nazwę słoika:

Dodaj następujące wtyczki w 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> 

montaż.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> 

Można wreszcie zbudować projekt z poniższej komendy:

mvn montażu czysty pakiet: pojedynczy zainstalować

Powiązane problemy