Ho un progetto CXF WS che vorrei utilizzarlo in un altro progetto, vorrei consumare questo WS in un progetto Web ma non so come generare il file Jar.Maven - Genera Jar e War
Per favore avete qualche idea o un esempio?
Grazie
Ho un progetto CXF WS che vorrei utilizzarlo in un altro progetto, vorrei consumare questo WS in un progetto Web ma non so come generare il file Jar.Maven - Genera Jar e War
Per favore avete qualche idea o un esempio?
Grazie
Il plugin maven-war supporta la creazione di un artefatto separato che contiene solo le classi.
http://maven.apache.org/plugins/maven-war-plugin/war-mojo.html
si veda il parametro 'attachClasses'. Non c'è bisogno di aggiungere il plugin jar o pasticciare con la confezione. Basta aggiungere il plugin war a pluginManagement e attivarlo.
Tuttavia, temo che questo non sia quello che vuoi. Per utilizzare un servizio Web CXF, è necessario un client. Per ottenere un client, seguire le istruzioni negli esempi CXF su come generare e utilizzare gli stub client. Avrai bisogno di un progetto maven separato per questo.
Prova ad aggiungere questo nella vostra sezione di generazione:
<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>
Sembra che devo cambiare fase a pacchetto. Se è impostato per la compilazione, c'è un errore su pom.xml. – Stony
Questo ha funzionato, ma come dovresti includere questo * .jar prodotto dal plugin maven-jar all'interno di un pacchetto war creato dal plugin maven-war? –
mvn package
a meno che il project's packaging è qualcosa oltre jar
. Quindi è necessario add an execution del jar plugin, come descritto nello plugin's usage page e come la prima risposta ha mostrato. Meglio ancora, se non è un barattolo, dividerlo in due moduli: uno che contiene un codice riutilizzabile e l'altro quello che lo utilizza.
Questo è un modo per raggiungerlo, tramite la proprietà. Per impostazione predefinita verrà generato un file di guerra e quando si desidera che il jar imposti la proprietà.
mvn install -Dp.type=jar
pom.xml
<properties>
<p.type>war</p.type>
</properties>
<packaging>${p.type}</packaging>
aggiungete quanto segue al pom.xml del progetto di guerra.
<attachClasses>true</attachClasses>
alla configurazione del plugin di guerra
<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>
aggiungete quanto segue al pom.xml del progetto in cui si desidera importare barattolo di progetto di guerra
<classifier>classes</classifier>
alla dipendenza dalle importazioni
<dependency>
<groupId>com.yourorg.foobar</groupId>
<artifactId>hello-world</artifactId>
<version>1.0</version>
<classifier>classes</classifier>
</dependency>
Questo dovrebbe funzionare:
<!-- 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>
Tratto da this blog.
Il modo migliore per raggiungere questo obiettivo è quello di utilizzare Maven plug-in assemblea da questo è possibile controllare anche il nome definitivo del vaso:
Aggiungere il seguente plugin nella vostra 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>
montaggio.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>
È possibile, infine, costruire il progetto con il seguente comando:
mvn assemblaggio pacchetto pulito: single installare
questo è bello ma l'aggiunta ' classi ' è inusuale in questi giorni –
aliopi