Получите maven зависимости времени выполнения в муравье - PullRequest
3 голосов
/ 24 августа 2011

Я хочу получить набор зависимостей времени выполнения от maven в ant. Я использую задания maven ant.

Я знаю, что вы можете ограничить зависимости областью действия ( см. Документы ):

<artifact:dependencies filesetId="dependency.fileset" useScope="runtime">
  <artifact:pom file="pom.xml" id="myProject" />
</artifact:dependencies>

и параметры области (из документов):

•compile - Includes scopes compile, system and provided
•runtime - Includes scopes compile and runtime
•test - Includes scopes system, provided, compile, runtime and test

Однако я хочу получить только зависимости времени выполнения (т.е. исключить зависимости компиляции). Моя лучшая идея на данный момент - получить зависимости времени выполнения и зависимости компиляции и перебрать зависимости времени выполнения, чтобы найти те, которые не находятся в зависимостях компиляции, но я еще не понял, как это сделать.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 24 августа 2011

Вам нужно что-то вроде:

...
<artifact:pom id="maven.project" file="pom.xml"/>

<artifact:dependencies useScope="runtime"
                       filesetId="dependencies.runtime"
                       pomRefId="maven.project"
                       settingsFile="${settings.xml}"/>
...

Тогда вы можете использовать набор файлов dependencies.runtime как обычно.

Надеюсь, это имеет больше смысла.

0 голосов
/ 24 августа 2011

Так вот, что я пытался получить разницу между наборами времени выполнения и наборов файлов компиляции (хотя это делает предположение, что в наборе файлов компиляции нет ничего, чего нет также в наборе файлов времени выполнения)

<artifact:dependencies filesetId="runtime" scopes="runtime">
  <artifact:pom file="pom.xml" id="myProject" />
</artifact:dependencies>
<artifact:dependencies filesetId="compile" scopes="compile">
  <artifact:pom file="pom.xml" id="myProject" />
</artifact:dependencies>

<difference id="difference" >
  <resources refid="runtime" />
  <resources refid="compile" />
</difference>

Однако это не дало ожидаемых результатов, поэтому я сделал следующее и обнаружил, что набор файлов времени выполнения не содержит зависимости компиляции.

<echo message="${toString:runtime}" />
<echo message="${toString:compile}" />

Так что я могу просто использовать область выполнения ...

...