【问题标题】:Building EAR from a single Maven project从单个 Maven 项目构建 EAR
【发布时间】:2017-06-02 21:27:31
【问题描述】:

有一个 Maven 项目曾经有 JAR 封装类型。现在项目已经发展,需要将其构建为 EAR,包括 JAR 本身及其依赖项。

这是否一定意味着我必须引入第二个带有 EAR 封装类型的 POM?是否可以从单个 Maven 项目构建 JAR+EAR?这背后的原因是我真的不想从根本上重组我的存储库结构。

如果不可能,我想我需要以某种方式重新组织项目结构以使用 Maven 模块。在这种情况下,你会推荐什么(子)模块结构?

【问题讨论】:

  • 一般来说你可以,但这不是一个好主意...更好的是创建一个带有耳朵包装的模块和一个带有罐子包装的模块和绑定在一起的父模块...分离关注点.. .

标签: java maven ear maven-ear-plugin


【解决方案1】:

我认为你可以在每次构建项目时使用 maven war 插件生成单个 war 文件

 <build>
<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-ear-plugin</artifactId>
    <version>2.3.2</version>
    <!-- configuring the ear plugin -->
    <configuration>
      <modules>
        <!-- all your modles -->
      </modules>
    </configuration>
  </plugin>
</plugins>

【讨论】:

    【解决方案2】:

    您将需要 3 个 pom,这是一个工作示例;

    pom 1 是父节点

    <?xml version="1.0" encoding="UTF-8"?>
    <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.greg</groupId>
      <artifactId>ear-example</artifactId>
      <version>1.0-SNAPSHOT</version>
      <packaging>pom</packaging>
    
      <name>ear-example</name>
      <modules>
        <module>example-jar</module>
        <module>example-ear</module>
      </modules>
    
    </project>
    

    pom 2 是罐子还是战争

    <?xml version="1.0"?>
    <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <modelVersion>4.0.0</modelVersion>
    
      <parent>
        <groupId>com.greg</groupId>
        <artifactId>ear-example</artifactId>
        <version>1.0-SNAPSHOT</version>
      </parent>
    
      <artifactId>example-jar</artifactId>
      <packaging>jar</packaging>
    
      <name>com.greg</name>
      <url>http://maven.apache.org</url>
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      </properties>
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
      </dependencies>
    </project>
    

    pom 3 是依赖于 jar/war 并使用 ear plugin

    的耳朵
    <?xml version="1.0"?>
    <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <modelVersion>4.0.0</modelVersion>
    
      <parent>
        <groupId>com.greg</groupId>
        <artifactId>ear-example</artifactId>
        <version>1.0-SNAPSHOT</version>
      </parent>
    
      <artifactId>example-ear</artifactId>
      <packaging>ear</packaging>
    
      <dependencies>
        <dependency>
          <groupId>com.greg</groupId>
          <artifactId>example-jar</artifactId>
          <version>${project.version}</version>
        </dependency>
      </dependencies>
    
      <build>
       <plugins>
         <plugin>
            <artifactId>maven-ear-plugin</artifactId>
            <version>2.10.1</version>
            <configuration>
            </configuration>
          </plugin>
        </plugins>
      </build>
    
    </project>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-05
      • 2012-05-26
      相关资源
      最近更新 更多