首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用MANIFEST.MF部署war -依赖项被忽略

使用MANIFEST.MF部署war -依赖项被忽略
EN

Stack Overflow用户
提问于 2013-04-11 21:09:14
回答 2查看 4.3K关注 0票数 2

我正在使用Arquillian将一个war部署到Apache7.x中进行测试,它依赖于JBoss Commons Collections。然而,它似乎就是不能接受模块依赖。

MANIFEST.MF

代码语言:javascript
复制
Dependencies: org.apache.commons.collectionss export

Arquillian部署

代码语言:javascript
复制
@Deployment
public static Archive<?> createDeployment() {
    WebArchive archive = ShrinkWrap.create(WebArchive.class);

    archive
        .addPackages(true, "com.example.package")
        .addAsResource("META-INF/MANIFEST.MF", "META-INF/MANIFEST.MF")

      // * Tried the following two options with no luck
      //.AddAsManifestResource("META-INF/MANIFEST.MF", "MANIFEST.MF")
      //.AddAsWebInfResource("META-INF/MANIFEST.MF", "META-INF/MANIFEST.MF")

      // * If I enable the following, it works fine. getLibrary just picks
      // * up the lib through maven.
      //.addAsLibraries(
      //         getLibrary("commons-collections:commons-collections:3.2.1"))
       ;

    return archive;
}

我不想使用jboss-deployment-structure.xml,因为它感觉就像用大锤敲坚果一样。

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-17 20:13:41

结果,我问了同样的问题again (这次是关于Jar Files),因为我把这个问题忘得一干二净。

自那以后,解决方案也被发现了:(与其他问题相同)

整个事情变得简单多了。

即使使用.addAsManifestResource或.setManifest,MANIFEST.MF也是由Maven自动生成的。

在pom.xml中的以下部分解决了这个问题,而不是使用自定义的MANIFEST.MF和.setManifest("META-INF/ MANIFEST.MF ");MANIFEST.MF是自动生成的,在资源文件夹中没有自定义的副本(最重要的是避免混淆,因为它被忽略了)

代码语言:javascript
复制
<build>
    <plugins>
     <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-war-plugin</artifactId>
       <configuration>
          <archive>
             <manifestEntries>
                <Dependencies>
                org.infinispan, 
                org.infinispan.infinispan-tree export,
                </Dependencies>
             </manifestEntries>
          </archive>
       </configuration>
     </plugin>
    </plugins>
</build>
票数 0
EN

Stack Overflow用户

发布于 2013-05-29 16:35:55

在我的例子中,我在src/test/resources.addAsManifestResource("MANIFEST.MF")中为Arquillian添加了一个MANIFEST.MF

MANIFEST.MF

代码语言:javascript
复制
Manifest-Version: 1.0
Built-By: me
Build-Jdk: 1.6.0_45 
Created-By: Maven Integration for Eclipse
Dependencies: org.infinispan export

Arquillian

代码语言:javascript
复制
@Deployment(testable = false)
public static WebArchive createDeployment() {
    MavenDependencyResolver mvnResolver = DependencyResolvers.use(MavenDependencyResolver.class).loadMetadataFromPom("pom.xml").goOffline();

    return ShrinkWrap
            .create(WebArchive.class, "example.war")
            .addPackages(true, Filters.exclude(".*Test.*"), "com/comapany/")
            .addAsManifestResource("MANIFEST.MF")
            .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml");
    }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15949648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档