gpt4 book ai didi

java - 排除 Maven 中除 API 包之外的所有内容

转载 作者:行者123 更新时间:2023-11-30 02:54:31 35 4
gpt4 key购买 nike

我有一个 Java 项目,包含三个主要部分:

  • net.code
  • xyz.code
  • xyz.code.api

我想创建两个 Jars:一个用于所有内容,另一个仅用于 xyz.code.api。第二个 Jar 还必须包含所有依赖项。

我设置了两个配置文件来执行此操作。第一个配置文件有效,但第二个配置文件不排除软件包。

<profile>
<id>all</id>
<build>
<resources>
<resource>
<directory>src/res</directory>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>resources</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>xyz.code.Main</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>api</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>api</shadedClassifierName>
<excludes>
<exclude>**/net/code/*</exclude>
<exclude>**/xyz/code/*</exclude>
</excludes>
<includes>
<include>**/xyz/code/api/*</include>
</includes>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>

创建了两个 Jars,但它们都包含项目中的所有内容。

最佳答案

如果 jar 共享相同的依赖项(因此可以具有相同的 pom),您可以考虑使用 maven ejb 插件:

http://maven.apache.org/plugins/maven-ejb-plugin/examples/generating-ejb-client.html

否则,应该考虑将项目拆分为两个模块,因为从同一项目创建两个 Artifact 是“反 Maven”的。有一些解决方法,但它们更复杂。

关于java - 排除 Maven 中除 API 包之外的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37655368/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com