代码之家  ›  专栏  ›  技术社区  ›  Justin Searls

在Maven2中,有没有一种方法可以将依赖范围限定为“仅打包”并使其远离测试类路径?

  •  2
  • Justin Searls  · 技术社区  · 15 年前

    安装程序 我正在打包一场战争,其中包含许多遗留JAR依赖项(为了保持这个简单性,它们不可能被修改或从部署的战争中排除)。

    问题 包括这两个罐子中的一个或两个都会在测试时造成无法避免的错误。如果我完全排除依赖项,测试就可以顺利通过,但是战争将缺少它需要的实际运行时类。

    希望 Maven2提供编译、测试、运行时、系统和提供的作用域。可悲的是,这些都不是 included in the assembly but kept off the test classpath .我的希望是我缺少一些明显的方法来完全在依赖性管理特性中处理这个案例。

    恐惧 我必须使用程序集插件将这些问题jar复制到目标中。我不想绕过依赖关系管理系统将JAR复制到目标中,因为我不想在内部存储库之外管理这些JAR。

    思想?选择?

    2 回复  |  直到 15 年前
        1
  •  2
  •   Justin Searls    15 年前

    当然,它认为我在发表一个问题后,会遇到一个潜在的解决方案。依赖插件的复制目标似乎可以处理这个问题。现在就试试这个: http://maven.apache.org/plugins/maven-dependency-plugin/usage.html

    编辑:结果证明这很适合我的需要,下面的片段:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
            <execution>
                <phase>prepare-package</phase>
                <goals>
                    <goal>copy</goal>
                </goals>
            </execution>
        </executions>
        <configuration>
            <artifactItems>
                <artifactItem>
                    <groupId>group</groupId>
                    <artifactId>artifact</artifactId>
                    <version>version</version>
                    <type>jar</type>
                    <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/lib</outputDirectory>
                </artifactItem>
            </artifactItems>
        </configuration>
    </plugin>
    
        2
  •  0
  •   Jherico    15 年前

    将jar文件中的测试类分解为一个单独的jar,该jar仅用于测试,并向具有遗留依赖项的jar依赖项添加一个排除项。