从构建中排除Maven依赖

时间:2018-12-23 17:30:26

标签: maven pom.xml

有两个Maven项目。项目A和项目B。B使用A作为依赖项。当我将B构建为战争时,Maven会导出A及其依赖项。如何告诉Maven在导出时不要单独包含此依赖关系树?我找不到在Maven War配置中的排除标签。

注意:我无法在依赖项中使用提供的范围,因为我需要使用它来使用嵌入式tomcat进行测试。

项目B Pom的片段

<dependencies>
<!-- Project A -->
<dependency>
    <groupId>test</groupId>
    <artifactId>test-core</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>

<build>
  <plugins>
    <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.6.1</version>
        <configuration>
            <encoding>UTF-8</encoding>
            <source>1.8</source>
            <target>1.8</target>
        </configuration>
    </plugin>
    <plugin>
      <groupId>org.apache.tomcat.maven</groupId>
      <artifactId>tomcat7-maven-plugin</artifactId>
      <version>2.2</version>
      <configuration>
        <path>/</path>
        <port>80</port>
      </configuration>
    </plugin>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.2.2</version>
        <configuration>
            <!-- Exclude Tag is not available in configuration -->
        </configuration>
    </plugin>  
  </plugins>

2 个答案:

答案 0 :(得分:1)

您需要创建配置文件,可以创建两个配置文件,一个用于开发(嵌入到tomcat,使用dep A),另一个用于生产(不使用dep)

<profiles>
    <profile>
        <id>dev</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <dependencies>
            <dependency>
                <!-- dep A -->
            </dependency>
        </dependencies>
    </profile>
    <profile>
        <id>prod</id>
        <dependencies>
            <dependency>
                <!-- dep A -->
                <scope>provided</scope>
            </dependency>
        </dependencies>
    </profile>
</profiles>

答案 1 :(得分:0)

我终于决定在git中克隆一个分支,并将其称为release分支。现在它将具有不同的Pom,即将提供B中项目A的范围。在Dev分支中进行了一系列更改之后,我将把它选入release分支并构建jar。另外,我认为这对詹金斯(Jenkins)来说应该是件好事(尚未经过测试,但这是下一个)