3

我有一个带有父模块和两个子模块的 Maven 项目:ServiceAPI. 该Service模块是一个 WAR 并包含项目的所有源文件,而该API模块的存在纯粹是为了构建一个包含来自 Service 模块的类子集的 jar,并将该 jar 部署到本地 maven 存储库。

我已经尝试了maven-dependency-plugin和 的组合maven-assembly-plugin来复制Service战争并将其包含在已部署的APIJAR 中,但我正在努力寻找一种方法来从服务模块中提取一组特定的类,而不是在整个胖战争。

来自APIpom.xml:

<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
      <execution>
        <id>copy-dependencies</id>
        <phase>package</phase>
        <goals>
          <goal>copy-dependencies</goal>
        </goals>
        <configuration>
          <excludeGroupIds>...</excludeGroupIds>
          <outputDirectory>${project.build.directory}/lib</outputDirectory>
        </configuration>
      </execution>
    </executions>
  </plugin>
  <plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <executions>
      <execution>
        <goals>
          <goal>single</goal>
        </goals>
        <phase>package</phase>
      </execution>
    </executions>
    <configuration>
      <descriptors>
        <descriptor>assembly.xml</descriptor>
      </descriptors>
    </configuration>
  </plugin>
</plugins>

我曾考虑过使用maven-jar-plugin来自Service模块的 pom 来构建苗条的 JAR,但这似乎是一种不好的做法。建议?

4

2 回答 2

3

我建议您的API项目实际上包含您要部署的类,并且Service模块依赖于它。如果你想模块化你的项目(你应该这样做),按照 Maven 想要的方式去做,而不是试图破解单个代码库。

于 2012-10-02T14:47:01.827 回答
1

您应该从 中取出实现细节war并将其放入单独的模块中。

.
├── pom.xml
├── 服务-api
| ├── pom.xml
| └── 源
| └── 主要
| └── java
| └── com
| └── 堆栈溢出
| └── SomeDao.java
├── 服务实现
| ├── pom.xml
| └── 源
| └── 主要
| └── java
| └── com
| └── 堆栈溢出
| └── SomeDaoImpl.java
└── 服务网
    ├── pom.xml
    └── 源
        └── 主要
            └── 网页应用
                └── WEB-INF
                    └── web.xml

service-impl依赖service-api。并且service-web将取决于service-impl.

于 2012-10-02T15:13:00.333 回答