Создание файла пути к классам с помощью Maven - PullRequest
3 голосов
/ 17 октября 2010

Я хотел бы создать файл пути к классам из зависимостей pom.xml.Мне это нужно, чтобы во время тестов у меня был classpath всех зависимостей (которые позже упакованы в пакет)

maven-dependency-plugin не подходит мне по двум причинам:

  • он генерируетпути к файлам в хранилище, поэтому, чтобы использовать другие модули, им сначала нужно запустить для них фазу install (я хотел бы иметь такие пути, как /some/root/othermodule/target/classes)
  • , это не включает собственный артефактпуть (target/classes), что означает, что мне нужно добавить его позже в коде, что неудобно

Поэтому я ищу другой плагин (или как правильно запустить maven-dependency-plugin)

1 Ответ

2 голосов
/ 18 октября 2010

Я закончил с использованием GMaven:

        <plugin>
            <groupId>org.codehaus.groovy.maven</groupId>
            <artifactId>gmaven-plugin</artifactId>
            <executions>
                <execution>
                    <phase>generate-resources</phase>
                    <goals>
                        <goal>execute</goal>
                    </goals>
                    <configuration>
                        <source>
                            def all = project.runtimeArtifacts.collect{
                                def aid = "${it.groupId}:${it.artifactId}:${it.version}"
                                def p = project.projectReferences[aid]
                                p?.build?.outputDirectory ?: it.file.path
                            } + project.build.outputDirectory
                            def file = new File(project.build.directory, ".classpath")
                            file.write(all.join(File.pathSeparator))
                        </source>
                    </configuration>
                </execution>
            </executions>
        </plugin>

Код немного сложен, так как я хотел пути к цели / классам, когда это возможно. Если это не требуется, можно сделать:

file.write(project.runtimeClasspathElements.join(File.pathSeparator))
...