java - 使用 maven 生成一个包含所有依赖项的 xml 文件

标签 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>

这样 <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>

有几点需要注意:

  1. 该脚本将 XML 输出到标准输出,但您显然可以非常轻松地将其写入文件或其他任何内容。
  2. runtimeClasspathElements 包含 jar 的绝对路径,这就是我使用正则表达式解析它的原因。您可以调整正则表达式以包含更多路径,或者如果您需要的不仅仅是 jar 文件名,则只需在前面加上一个字符串。

我发布了 working example on github (它只是一个 POM)我将上面的插件配置绑定(bind)到初始化构建阶段。如果你有 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>

注意:我不是 groovy 专家,所以可能有更 groovy 的方法来做到这一点,但你可以看到它是多么容易。

关于java - 使用 maven 生成一个包含所有依赖项的 xml 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7755255/

相关文章:

java - iText 版本 4.2.1 在 Maven 中央存储库中重定向

hibernate - JBoss AS 7 迁移 - java.lang.ClassNotFoundException : org. hibernate.validator.ClassValidator

java - 如何在 jpa 监听器中获取实体管理器或事务

java - 在 Spring MVC + Hibernate 中自动生成唯一的随机字符串

java - 如何在没有表单的情况下为每个循环将一个值从一个 JSP 页面发送到另一个 JSP 页面?

java - 算法 : Find anagram of given string at a given index in lexicographically sorted order

java - Resteasy 客户端抛出异常

java - Webservice JAX RPC 客户端如何与受 OWSM 保护的服务配合使用

maven - 如何发布具有项目间依赖关系的 Maven 多模块项目?

java - 单元测试仅在由 maven 运行时失败