如何生成两个项目罐子和战争(how to generate jar and war both in

2019-09-16 14:16发布

我们有两个不同的项目。 并且和控制器有两个项目几乎相同。

项目A具有里面控制器。 因此产生的战争,因为这是没有问题的。

但是,项目B,要求项目的控制器的罐子控制器。

任何机构可以告诉我怎样才能从中我可以在B项目使用项目A的控制器的jar文件?

Answer 1:

对于这样的事情的默认的解决方案是具有两个单独的模块中的一个对战争和一个用于控制器模块。 切勿启动Maven的战斗。



Answer 2:

保留项目A的包装为战争。 Maven的罐子插件添加到项目A的pom.xml的建立与“MVN清洁的jar包:罐子”的项目。 这将创建两个罐子和战争。



Answer 3:

作为@Shashank指出的那样,你可以让行家也执行Maven的罐子的插件。 但是,这只会造成一个JAR,仅包含已编译的类,而不是Web应用程序的来源。

有简单的方法如何,只需简单的做一个多模块项目mvn clean install没有明确调用命令mvn clean install jar:jar

就在加maven-jar-plugin>build>plugins ,并调用它的“一揽子”阶段:

<project>
  <packaging>war</packaging>
  <!-- .. -->
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <classifier>classes</classifier>
        </configuration>
        <executions>
          <execution>
            <id>package-jar</id>
            <phase>package</phase>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
      </plugin>
    </plugins>
  </build>
</project>

这将创建一个大的.war和一个较小的-classes.jar神器。

更新2017年6月15日 :如果在另一方面,你需要的WAR文件(不仅是包装的java类),这是一种伪装成一个JAR文件精确副本 ,您可以使用组合maven-dependency-pluginmaven-install-plugin创建一个WAR的JAR副本。 (我正好需要这样一个解决方案 - 不要问为什么;))

创建一个战模块上dependend一个新的模块:

<project>
  <!-- ... -->
  <dependencies>
    <!-- ... -->
    <dependency>
      <groupId>your-group-id-here</groupId>
      <artifactId>your-war-artifact-id-here</artifactId>
      <version>${project.version}</version>
      <type>war</type>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <id>copy</id>
            <phase>package</phase>
            <goals>
              <goal>copy</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <artifactItems>
            <artifactItem>
              <groupId>your-group-id-here</groupId>
              <artifactId>your-war-artifact-id-here</artifactId>
              <version>${project.version}</version>
              <type>war</type>
              <overWrite>true</overWrite>
              <destFileName>jar-copy-of-war.jar</destFileName>
            </artifactItem>
          </artifactItems>
          <overWriteReleases>false</overWriteReleases>
          <overWriteSnapshots>true</overWriteSnapshots>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-install-plugin</artifactId>
        <executions>
          <execution>
            <id>install-copy-of-war</id>
            <phase>install</phase>
            <goals>
              <goal>install-file</goal>
            </goals>
            <configuration>
              <packaging>jar</packaging>
              <classifier>copy-of-war</classifier>
              <artifactId>${project.artifactId}</artifactId>
              <groupId>your-group-id-here</groupId>
              <version>${project.version}</version>
              <file>${project.build.directory}/dependency/jar-copy-of-war.jar</file>
              <generatePom>true</generatePom>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

这将创建战的副本,将其命名为“--copy-的-war.jar”,而“复制的战争”是此模块的分类。



Answer 4:

您既可以在同一个项目中,也安装生成,1.要生成JAR,使用Maven-JAR-插件2.安装罐,使用Maven安装,插件3.要部署罐,使用Maven - 部署 - 插件

注意:使用类型为战争,默认情况下它会产生项目的war文件。

下面检查更详细的配置: http://communitygrids.blogspot.in/2007/11/maven-making-war-and-jar-at-same-time.html



文章来源: how to generate jar and war both in project