在maven配置文件中使用maven-dependency-plugin。

问题描述 投票:0回答:2

我创建了一个maven配置文件,里面有maven-dependency-plugin。

以下是我的插件

         <profile>
            <id>copy-dep</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-dependency-plugin</artifactId>
                        <executions>
                        <execution>
                            <id>copy-external</id>
                            <phase>none</phase>
                            <goals>
                                <goal>copy</goal>
                            </goals>
                        </execution>
                        </executions>
                        <configuration>
                            <excludeGroupIds>group ids that I need to exclude</excludeGroupIds>
                            <excludeArtifactIds>artifact ids that I need to exclude</excludeArtifactIds>
                            <includeArtifactIds>artifact ids that I need to include</includeArtifactIds>
                            <includeGroupIds>group id that I need to include</includeGroupIds>
                            <outputDirectory>${project.build.directory}/libs</outputDirectory>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

我使用下面的命令来执行

mvn dependency:copy-dependencies -DoutputDirectory=libs -Pcopy-dep

但是当我执行这个命令时,它寻找所有定义在pom中的依赖关系,并把它们也复制过来。

我试着把不需要的依赖项放在exclude标签里,但没有用,然后我又试着删除exclude标签,保留需要的依赖项,但也没有用。

在我的 pom 中,我使用 maven assembly 插件来分离出所需的依赖项,我不想让这些依赖项与创建的 profile 一起被复制。

有没有更好的方法来实现同样的目的。

java maven maven-3 maven-dependency-plugin maven-profiles
2个回答
1
投票

只复制 "列出的 "工件(本例中只复制junit和mockito)。

<profile>
  <id>copy-dep</id>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>2.8</version>
        <configuration>
          <artifactItems>
            <artifactItem>
              <groupId>junit</groupId>
              <artifactId>junit</artifactId>
              <version>4.12</version>
            </artifactItem>
            <artifactItem>
              <groupId>org.mockito</groupId>
              <artifactId>mockito-core</artifactId>
              <version>2.28.2</version>
            </artifactItem>
          </artifactItems>
          <outputDirectory>${project.build.directory}/libs</outputDirectory>
        </configuration>
      </plugin>
    </plugins>
  </build>
</profile>

并执行它。

mvn dependency:copy -Pcopy-dep

0
投票

你需要告诉Maven要执行哪一个。所以要写。

mvn dependency:copy-dependencies@copy-external -DoutputDirectory=libs -Pcopy-dep

顺便说一下,把这个放到配置文件中可能没有必要。

© www.soinside.com 2019 - 2024. All rights reserved.