如何使用maven在MANIFEST.MF中为JBoss AS 7生成模块依赖项?

mig*_*igu 28 java jboss dependencies maven jboss7.x

在JBoss AS 7中,依赖于AS中包含的库的Web应用程序必须在META-INF/MANIFEST.MF中声明这些依赖关系,如下所示:

Dependencies: <package-name>
Run Code Online (Sandbox Code Playgroud)

例:

Dependencies: org.slf4j
Run Code Online (Sandbox Code Playgroud)

(这与Import-Package:for OSGi相当.)有关从旧版本迁移,类加载和部署的隐式模块依赖关系的文章中可以找到更多信息.

该项目是使用Maven构建的.AS中包含的所有依赖项都使用范围"提供"声明.

现在的问题

有没有一种简单的方法可以使用Maven自动创建这个依赖项列表?

只应包含声明范围"已提供"的依赖项,因为所有其他依赖项已包含在WAR中.

Mik*_*cki 27

这些依赖项是由maven工件没有任何映射的名称声明的.您可能可以将groupId与jboss模块名称保持同步,但我不确定这是不是一个好主意.而我仍然无法想到任何自动化解决方案.

但是您可以手动管理配置,如您在问题中提供的一个来源中所述:

   <build>
       ...
       <plugins>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-war-plugin</artifactId>
           <configuration>
              <archive>
                 <manifestEntries>
                    <Dependencies>org.slf4j</Dependencies>
                 </manifestEntries>  
              </archive>
           </configuration>
         </plugin>   
       </plugins>
    </build>
Run Code Online (Sandbox Code Playgroud)

我希望有人想出一个插件来减少麻烦.

  • @migu - 看看jboss根目录下的modules/org/slf4j/main文件夹(因为这是由org.slf4j依赖项导入的).具体来看看作为其描述符的module.xml.如您所见,maven组和此模块使用相同的名称只是巧合. (2认同)
  • 这似乎是目前唯一可用的解决方案.新JBoss模块系统的缺点是我们必须在POM中维护两组重叠的依赖关系,并且我们必须查找我们可以手动使用的模块. (2认同)