XML maven工件不在类路径上

XML maven工件不在类路径上,maven,dependencies,Maven,Dependencies,我在Maven中安装了一些外部配置XML文件。我需要将它们放在我的测试类路径上,但它们没有出现 它们必须以XML的形式存在,我不能将它们打包到Jar中——但我愿意为此尝试其他任何东西,自定义插件等等 请不要告诉我Maven只适用于JAR——这根本不是真的,如果你提供了一个参考反驳,我可以向你保证这是过时的/错误的信息 因此指定了依赖项: <dependency> <groupId>some.group</groupId>

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

它们必须以XML的形式存在,我不能将它们打包到Jar中——但我愿意为此尝试其他任何东西,自定义插件等等

请不要告诉我Maven只适用于JAR——这根本不是真的,如果你提供了一个参考反驳,我可以向你保证这是过时的/错误的信息

因此指定了依赖项:

    <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

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

编辑:下一个最好的黑客可能是使用maven依赖插件将它们复制到输出目录target/classes。如果我的配置适合jar,那么这闻起来像是一个Maven bug

编辑2:@khmarbaise请求生成帮助程序插件配置:

        <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数据。

不幸的是,我找不到任何方法强迫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>

您能展示一下您在pom中创建XML工件的位置吗?您提到了build helper maven插件,但是如何?@khmarbaise编辑了这个问题以包括config,但我怀疑这有什么问题,因为maven能够将XML文件解析为依赖项,它只是没有把它们放在类路径上问题是为什么你不喜欢把它们放在一个jar中?如果XML文件在类路径上变成普通的XML文件,那么在工件repo中放在一个jar中可以吗?如果答案是“是”,我可以帮你。mvn-X测试是否在类路径中显示xml文件?