Я действительно не знаю о JBoss и есть ли другой способ сделать это, но вы можете сделать это довольно просто с GMaven:
<plugin>
<groupId>org.codehaus.gmaven</groupId>
<artifactId>gmaven-plugin</artifactId>
<version>1.3</version>
<configuration>
<source>
def sw = new StringWriter()
def xml = new groovy.xml.MarkupBuilder(sw)
xml.module(xmlns:'urn:jboss:module:1.0', name:'ats.platform') {
resources {
project.runtimeClasspathElements.each {
def path = it.find(".*?([\\w\\.-]*\\.jar)") { it[1] }
!path?:'resource-root'(path:path)
}
}
}
println sw
</source>
</configuration>
</plugin>
Несколько замечаний:
- Этот скрипт выкладывает XML в stdout, но вы можете легко записать его в файл или что-то еще.
-
runtimeClasspathElements
содержит абсолютные пути к банке, поэтому я анализирую его с помощью регулярного выражения. Вы можете настроить регулярное выражение для добавления большего количества пути или просто добавить строку, если вам нужно больше, чем просто имя файла jar.
Я разместил рабочий пример на github (это просто POM), где я связал вышеуказанную конфигурацию плагина с фазой инициализации сборки. Если у вас есть git, вы можете клонировать и запустить его самостоятельно:
git clone git://github.com/zzantozz/testbed tmp
cd tmp
mvn -q initialize -pl stackoverflow/7755255-gmaven-to-build-xml-from-classpath
В примере проекта я добавил jdom 1.0 и dom4j 1.6.1 в качестве зависимостей, и вот вывод, который он создал:
<module xmlns='urn:jboss:module:1.0' name='ats.platform'>
<resources>
<resource-root path='jdom-1.0.jar' />
<resource-root path='dom4j-1.6.1.jar' />
<resource-root path='xml-apis-1.0.b2.jar' />
<resource-root path='aspectjrt-1.6.11.jar' />
</resources>
</module>
Примечание: я не специалист по классным играм, так что может быть отличный способ сделать это, но вы можете видеть, насколько это легко.