kan*_*kan 9 java maven jboss7.x
我需要module.xml
为JBoss7 生成一个maven项目的文件,该项目有很多jar依赖项.最简单的方法是什么?该文件看起来像:
<module xmlns="urn:jboss:module:1.0" name="ats.platform">
<resources>
<resource-root path="dom4j-1.6.1.jar"/>
<resource-root path="jdom-1.0.jar"/>
...
</resources>
</module>
Run Code Online (Sandbox Code Playgroud)
因此<resource-root>
应该为每个项目jar依赖项创建元素.
或者也许我做错了什么?从maven项目创建JBoss7模块的正确方法是什么?
我真的不了解 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>
Run Code Online (Sandbox Code Playgroud)
有几点需要注意:
runtimeClasspathElements
jar 的绝对路径,这就是我用正则表达式解析它的原因。您可以调整正则表达式以包含更多路径,或者如果您需要的不仅仅是 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
Run Code Online (Sandbox Code Playgroud)
在示例项目中,我添加了 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>
Run Code Online (Sandbox Code Playgroud)
注意:我不是一个绝妙的专家,所以可能有一个更绝妙的方法来做到这一点,但即使如此,你也可以看到它是多么容易。
归档时间: |
|
查看次数: |
4697 次 |
最近记录: |