1

我有一些安装在 Maven 中的外部配置(XML 文件)。我需要将它们放在我的测试类路径中,但它们没有出现。

它们必须保留为 XML,我不能将它们打包在 Jar 中 - 但我愿意为此尝试其他任何东西,自定义插件等。

(请不要告诉我 Maven 仅适用于罐子 - 这根本不是真的(如果您提供参考反驳,我可以向您保证这是过时/错误信息)。

依赖项是这样指定的:

    <dependency>
        <groupId>some.group</groupId>
        <artifactId>some.artifact</artifactId>
        <version>${project.version}</version>
        <scope>test</scope>
        <type>xml</type>
        <classifier>some.classifier</classifier>
    </dependency>

这些 XML 工件是由 build-helper 插件创建的(因此他们项目的 POM 中没有 1-2-1)。

我目前唯一的 hacky 解决方案是检查 M2_HOME 属性并从那里加载文件(因为它们被定义为依赖项 Maven 确实将它们拉下来) - 但我对此并不满意。

编辑:下一个最好的黑客可能是使用 maven-dependency-plugin 将这些复制到输出目录(目标/类)。如果我的配置适用于 Jars,那么这闻起来像 Maven 错误。

编辑 2:@khmarbaise 要求提供 build-helper-plugin 配置:

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <executions>
                <execution>
                    <id>attach-artifacts</id>
                    <phase>package</phase>
                    <goals>
                        <goal>attach-artifact</goal>
                    </goals>
                    <configuration>
                        <artifacts>
                            <artifact>
                                <file>target/classes/ddl-seed.xml</file>
                                <type>xml</type>
                                <classifier>ddl-seed</classifier>
                            </artifact>
                            <!-- ... more definitions -->

这将为所有 XML 工件生成正确的 maven-metadata-local.xml 数据。

4

1 回答 1

0

不幸的是,我找不到强制 maven 将指定的测试依赖项添加到测试类路径的方法,除了这种将其复制到测试类路径上的目录的臭技巧。

这似乎是最快的方法(它用于测试依赖项),避免创建任何 JAR。

            <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
                <execution>
                    <id>unpack</id>
                    <phase>generate-test-resources</phase>
                    <goals>
                        <goal>copy</goal>
                    </goals>
                    <configuration>
                        <artifactItems>
                            <artifactItem>
                                <groupId>com.acme.gid</groupId>
                                <artifactId>com.acme.aid</artifactId>
                                <version>${project.version}</version>
                                <classifier>ddl</classifier>
                                <type>xml</type>
                                <outputDirectory>${project.build.directory}/test-classes</outputDirectory>
                            </artifactItem>
                        </artifactItems>
                    </configuration>
                </execution>
            </executions>
        </plugin>
于 2012-07-13T16:27:32.797 回答