You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache Maven:如何打包不同classifier构件并对应依赖指定classifier

实现方案

核心思路

通过Maven的Profile机制区分两种构建场景,每个Profile单独配置对应A的依赖classifier、以及B自身打包的classifier,实现两套构件的独立构建。

步骤1:配置项目B的pom.xml

在B的pom.xml中添加两个自定义Profile,示例配置如下:

<project>
  <!-- 项目基础groupId、artifactId、version等配置省略 -->
  <dependencies>
    <!-- 不需要区分classifier的公共依赖统一写在此处 -->
  </dependencies>

  <profiles>
    <!-- Profile1:构建classifier为com的B构件 -->
    <profile>
      <id>com</id>
      <activation>
        <activeByDefault>false</activeByDefault>
      </activation>
      <dependencies>
        <!-- 引入A的com classifier依赖 -->
        <dependency>
          <groupId>替换为A项目的groupId</groupId>
          <artifactId>替换为A项目的artifactId</artifactId>
          <version>替换为A项目的版本号</version>
          <classifier>com</classifier>
        </dependency>
      </dependencies>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.3.0</version>
            <configuration>
              <!-- 指定当前B构件的classifier为com -->
              <classifier>com</classifier>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>

    <!-- Profile2:构建classifier为exec的B构件 -->
    <profile>
      <id>exec</id>
      <activation>
        <activeByDefault>false</activeByDefault>
      </activation>
      <dependencies>
        <!-- 引入A的exec classifier依赖 -->
        <dependency>
          <groupId>替换为A项目的groupId</groupId>
          <artifactId>替换为A项目的artifactId</artifactId>
          <version>替换为A项目的版本号</version>
          <classifier>exec</classifier>
        </dependency>
      </dependencies>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.3.0</version>
            <configuration>
              <!-- 指定当前B构件的classifier为exec -->
              <classifier>exec</classifier>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>

步骤2:执行构建

  • 构建classifier为com的B包:执行命令 mvn clean package -Pcom
  • 构建classifier为exec的B包:执行命令 mvn clean package -Pexec
  • 需同时生成两个包直接执行合并命令即可:mvn clean package -Pcom,exec

补充说明

  • 如果需要将B构件安装到本地仓库或部署到私服,将上述命令中的package替换为install或deploy即可,对应classifier会自动保留。
  • 如果A、B在同一工程下,构建B之前需先执行A的install命令,确保本地仓库存在对应classifier的A构件。

内容的提问来源于stack exchange,提问作者Tarun Thapa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 01:48:03