我可以在maven中制作jar和战争项目吗?

时间:2014-05-10 11:44:46

标签: maven

我在maven中有一个项目(A),包含战争包装。另一个项目(B)依赖于A并且它需要项目一个jar文件但是在编译阶段,项目A的战争将产生并且没有jar可用于项目B. 如何在编译阶段创建一个项目A的jar,以便项目B可以使用它?

2 个答案:

答案 0 :(得分:2)

我建议采用不同的方式并使用可以使用的maven-war-plugin which can produce a separate artifact for the classes,如下所示:

<dependency>
  <groupId>myGroup</groupId>
  <artifactId>myArtifact</artifactId>
  <version>myVersion</myVersion>
  <classifier>classes</classifier>
</dependency>

这可以通过在war模块中使用以下配置来实现:

 <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-war-plugin</artifactId>
      <version>2.4</version>
      <configuration>
        <attachClasses>true</attachClasses>
      </configuration>
    </plugin>
    ...
  </plugins>

答案 1 :(得分:0)

我找到了解决方案::)

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