Maven依赖插件在build-classpath和tree之间的排序差异

时间:2013-01-15 11:31:18

标签: maven maven-3 maven-dependency-plugin

有谁可以解释为什么我会在maven-dependency-plugin上的树和build-classpath之间获得不同的输出顺序?

我正在运行

mvn -pl releases org.apache.maven.plugins:maven-dependency-plugin:2.6:tree -Dtokens=whitespace -outputFile=tree.txt -DexcludeTransitive=true

在命令行上生成输出。树的输出反映了pom文件中定义的排序,而build-classpath的输出则没有。

http://pastebin.com/J2Q6iTK6

的输出

build-classpath http://pastebin.com/k2SdrHP7

的输出

非常感谢任何见解。

Maven config

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.6</version>
            <executions>
                <execution>
                    <id>generate-classpath-windows</id>
                    <phase>generate-resources</phase>
                    <goals>
                        <goal>build-classpath</goal>
                    </goals>
                    <configuration>
                        <pathSeparator>,</pathSeparator>
                        <prefix>..\jars</prefix>
                        <fileSeparator>\</fileSeparator>
                        <outputFile>${project.build.directory}/deployment/bin/classpath.windows</outputFile>
                    </configuration>
                </execution>
                <execution>
                    <id>generate-classpath-unix</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>build-classpath</goal>
                    </goals>
                    <configuration>
                        <pathSeparator>:</pathSeparator>
                        <prefix>../jars</prefix>
                        <fileSeparator>/</fileSeparator>
                        <outputFile>${project.build.directory}/deployment/bin/classpath.unix</outputFile>
                    </configuration>
                </execution>
                <execution>
                    <id>copy-dependencies</id>
                    <phase>package</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${project.build.directory}/deployment/jars</outputDirectory>
                    </configuration>
                </execution>
            </executions>
            <configuration>
                <overWriteReleases>false</overWriteReleases>
                <overWriteSnapshots>true</overWriteSnapshots>
                <overWriteIfNewer>true</overWriteIfNewer>
                <excludeTransitive>true</excludeTransitive>
                <includeScope>runtime</includeScope>
                <regenerateFile>true</regenerateFile>
            </configuration>
        </plugin>

信息

Apache Maven 3.0.4 (r1232337; 2012-01-17 08:44:56+0000)
Maven home: C:\apps\apache-maven-3.0.4
Java version: 1.6.0_37, vendor: Sun Microsystems Inc.
Java home: C:\Program Files\Java\jdk1.6.0_37\jre
Default locale: en_GB, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "x86", family: "windows"

1 个答案:

答案 0 :(得分:1)

类路径是线性表示,树是嵌套的。 Maven应该尝试在类路径中首先保持根级别依赖项,因为它们最接近,因此应首先解析。

从你的输出中看起来很奇怪,我没有看到我期望的正常逻辑重类路径构造。

此外,直到2.6版本的依赖插件,在Maven 3.x上dependency:tree输出不正确。我想知道build-classpath中是否存在来自同一根本原因的错误。我会把这个问题发送到users@maven.apache.org,看看是否有人(修复dependency:tree的Hervé)知道答案......