Maven - Создание банды и войны - программирование
Подтвердить что ты не робот

Maven - Создание банды и войны

У меня есть проект CXF WS, который я бы использовал в другом проекте, я бы использовал этот WS в веб-проекте, но я не знаю, как создать файл Jar.

У вас есть идея или пример?

Спасибо

4b9b3361

Ответ 1

Плагин maven-war поддерживает создание отдельного артефакта, который просто содержит классы.

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

См. параметр "attachClasses". Не нужно добавлять в банку плагин или беспорядок с упаковкой. Просто добавьте плагин войны в pluginManagement и включите это.

Однако я боюсь, что это не то, что вы хотите. Чтобы использовать веб-службу CXF, вам нужен клиент. Чтобы получить клиента, следуйте инструкциям в примерах CXF для создания и использования заглушек клиента. Для этого вам понадобится отдельный проект maven.

Ответ 2

Попробуйте добавить это в свой раздел сборки:

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

Ответ 3

Добавьте следующий проект 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>

Ответ 4

Это один из способов его достижения через свойство. По умолчанию он будет генерировать военный файл, и если вы хотите, чтобы jar просто установил свойство.

mvn install -Dp.type=jar

pom.xml

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

Ответ 5

Это должно работать:

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

Взято из этот блог.

Ответ 6

mvn package, если ваша упаковка проекта не является чем-то помимо jar. Затем вам нужно добавить выполнение jar plugin, как описано на странице использования плагина и, как показал первый ответ. Еще лучше, если это не банка, разделите ее на два модуля: один, содержащий банку с повторным использованием кода, а другой - ту, которая ее использует.

Ответ 7

Лучший способ достичь этого - с помощью плагина сборки 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

Ответ 8

Принимая во внимание вашу проектную упаковку 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>