Maven выполняет обрезку вашего значения <pathSeparator>
, что приводит к пустому значению, поскольку разделитель строк считается пробельным. Тогда, поскольку нет значения, Maven возвращается к использованию по умолчанию. Я не вижу никакого простого способа обойти это поведение.
Есть еще несколько вариантов. Вы могли бы рассмотреть вопрос об использовании dependency:list
цели:
pom.xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
<executions>
<execution>
<id>list-dependencies</id>
<phase>package</phase>
<goals>
<goal>list</goal>
</goals>
<configuration>
<outputFile>target/modules-list.txt</outputFile>
</configuration>
</execution>
</executions>
</plugin>
мишень/модули-list.txt
The following files have been resolved:
org.slf4j:slf4j-log4j12:jar:1.7.10:compile
org.hamcrest:hamcrest-core:jar:1.3:test
junit:junit:jar:4.11:test
log4j:log4j:jar:1.2.17:compile
org.slf4j:slf4j-api:jar:1.7.10:compile
javax.ws.rs:jsr311-api:jar:1.1.1:compile
com.sun.jersey:jersey-server:jar:1.19:compile
com.sun.jersey:jersey-core:jar:1.19:compile
Это артефакт идентификаторы Maven вместо баночка имена файлов. Возможно, это на самом деле более ценно, потому что выход не изменится на разных машинах, выполняющих сборку. (Файлы jar будут использовать абсолютные пути, которые могут быть разными на разных машинах.)
Если на самом деле это должны быть имена файлов jar вместо идентификаторов артефакта Maven, то вы могли бы сгребать что-то вместе, введя символ без пробелов в значение <pathSeparator>
, так что даже после того, как Maven обрезает значение, есть что-то, что необходимо для переопределения разделителя путей по умолчанию.
pom.xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
<executions>
<execution>
<id>list-dependencies</id>
<phase>package</phase>
<goals>
<goal>build-classpath</goal>
</goals>
<configuration>
<outputFile>target/modules-list.txt</outputFile>
<pathSeparator>_${line.separator}</pathSeparator>
</configuration>
</execution>
</executions>
</plugin>
мишень/модули-list.txt
/Users/naurc001/.m2/repository/com/sun/jersey/jersey-core/1.19/jersey-core-1.19.jar_
/Users/naurc001/.m2/repository/javax/ws/rs/jsr311-api/1.1.1/jsr311-api-1.1.1.jar_
/Users/naurc001/.m2/repository/com/sun/jersey/jersey-server/1.19/jersey-server-1.19.jar_
/Users/naurc001/.m2/repository/log4j/log4j/1.2.17/log4j-1.2.17.jar_
/Users/naurc001/.m2/repository/org/slf4j/slf4j-api/1.7.10/slf4j-api-1.7.10.jar_
/Users/naurc001/.m2/repository/org/slf4j/slf4j-log4j12/1.7.10/slf4j-log4j12-1.7.10.jar_
/Users/naurc001/.m2/repository/junit/junit/4.11/junit-4.11.jar_
/Users/naurc001/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar
К сожалению, это оставляет вас с некрасивым подчеркиванием в конце. Если вы хотите их очистить, вам понадобится еще один шаг сборки, чтобы очистить их. Один из подходов состоял бы в том, чтобы сгенерировать этот файл на фазе generate-resources
, а затем использовать maven-resources-plugin для выполнения замены токена во время фазы process-resources
.
И, наконец, если вам просто нужна эта информация для целей документации, рассмотрите возможность использования документации сайта, предоставленной maven-project-info-reports-plugin.
Возможно, раздел CDATA, содержащий строку перевода, будет работать – Aaron
@ Аарон Нет, это не так. Это похоже на ввод новой строки непосредственно в пом. Кажется, что такие пробельные символы полностью урезаны. Единственный способ найти новые строки - это окружить их печатными символами, что действительно не полезно. – radlan
Зачем вам это нужно? pathSeparator обычно является разделителем, который ОС использует для разделения пути. – Tunaki