2

我想将 3 个以上的 maven 项目(基于 HTML、javascript 和 CSS)组合成一个。我的主项目使用来自其他项目的依赖项。那么,如何在不更改这些依赖项的情况下构建单个项目呢?

4

2 回答 2

4

假设您有一个多模块项目:

  1. mysite: 父 pom 模块。
  2. mysite-core:一个ja​​va模块
  3. mysite-web: 一个网络资源模块 (javascript, html, ...)
  4. mysite-webapp:一个战争模块

mysite具有packaging pom并包括其他 3 个modules

<groupId>mysite</groupId>
<artifactId>mysite</artifactId>
<packaging>pom</packaging>
<modules>
   <module>../mysite-core</module>
   <module>../mysite-web</module>
   <module>../mysite-webapp</module>
</modules>

mysite-core使用标准jar packaging

<parent>
   <artifactId>mysite</artifactId>
   <groupId>mysite</groupId>
   <relativePath>../mysite/</relativePath>
</parent>
<groupId>mysite</groupId>
<artifactId>mysite-core</artifactId>

mysite-web很相似:

...
<artifactId>mysite-web</artifactId>

mysite-webapp包括 java 和 web 资源模块作为依赖项:

...
<artifactId>mysite-webapp</artifactId>
<packaging>war</packaging>

<dependency>
   <groupId>mysite</groupId>
   <artifactId>mysite-core</artifactId>
</dependency>
<dependency>
   <groupId>mysite</groupId>
   <artifactId>mysite-web</artifactId>
</dependency>

使用maven-war-plugin的overlays属性,您可以将资源添加到战争中:

<overlays>
   <overlay>
      <groupId>mysite</groupId>
      <artifactId>mysite-web</artifactId>
      <type>jar</type>
   </overlay>
</overlays>

注意:最好有一个平面项目布局,例如:

    • 父 pom 模块
    • java pom模块
    • java-1 jar 模块
    • java-2 jar 模块
    • 网页资源jar模块
    • 战争模块

而不是分层布局:

    • 父 pom 模块
      • java pom模块
      • java-1 jar 模块
      • java-2 jar 模块
      • 网页资源jar模块
      • 战争模块

我注意到像 Eclipse 这样的工具不喜欢分层结构(缓慢甚至无穷无尽的构建)。

于 2012-12-31T20:48:48.493 回答
-1

使用 Maven 模块。这里有大量文档:

http://maven.apache.org/guides/mini/guide-multiple-modules.html

于 2012-12-31T11:05:18.513 回答