У меня есть проект CXF WS, который я бы использовал в другом проекте, я бы использовал этот WS в веб-проекте, но я не знаю, как создать файл Jar.
У вас есть идея или пример?
Спасибо
У меня есть проект CXF WS, который я бы использовал в другом проекте, я бы использовал этот WS в веб-проекте, но я не знаю, как создать файл Jar.
У вас есть идея или пример?
Спасибо
Плагин maven-war поддерживает создание отдельного артефакта, который просто содержит классы.
http://maven.apache.org/plugins/maven-war-plugin/war-mojo.html
См. параметр "attachClasses". Не нужно добавлять в банку плагин или беспорядок с упаковкой. Просто добавьте плагин войны в pluginManagement и включите это.
Однако я боюсь, что это не то, что вы хотите. Чтобы использовать веб-службу CXF, вам нужен клиент. Чтобы получить клиента, следуйте инструкциям в примерах CXF для создания и использования заглушек клиента. Для этого вам понадобится отдельный проект maven.
Попробуйте добавить это в свой раздел сборки:
<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>
Добавьте следующий проект pom.xml of war.
<attachClasses>true</attachClasses> для конфигурации военного плагина
<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>
Добавьте в pom.xml проект проекта, в который вы хотите импортировать проект jar of war
<classifier>classes</classifier> для импорта зависимостей
<dependency>
<groupId>com.yourorg.foobar</groupId>
<artifactId>hello-world</artifactId>
<version>1.0</version>
<classifier>classes</classifier>
</dependency>
Это один из способов его достижения через свойство. По умолчанию он будет генерировать военный файл, и если вы хотите, чтобы jar просто установил свойство.
mvn install -Dp.type=jar
pom.xml
<properties>
<p.type>war</p.type>
</properties>
<packaging>${p.type}</packaging>
Это должно работать:
<!-- 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>
Взято из этот блог.
mvn package, если ваша упаковка проекта не является чем-то помимо jar. Затем вам нужно добавить выполнение jar plugin, как описано на странице использования плагина и, как показал первый ответ. Еще лучше, если это не банка, разделите ее на два модуля: один, содержащий банку с повторным использованием кода, а другой - ту, которая ее использует.
Лучший способ достичь этого - с помощью плагина сборки Maven, вы также можете контролировать окончательное название банки:
Добавьте следующий плагин в свой 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>
Вы можете, наконец, построить проект с помощью следующей команды:
mvn clean package assembly: single install
Принимая во внимание вашу проектную упаковку maven для войны
<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>
добавьте следующие исполнения в 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>