Зависимости в MANFEST.MF игнорируются в JBoss 7

У нас есть модуль EJB, который мы развертываем в JBoss 7.1.1, который зависит от Infinispan и Infinispan Treecache.

Я создал модуль и развернул его в разделе модулей jboss.

Однако, похоже, есть проблема с его правильным подбором. Это выполняется как Arquillian Test. Развертывание:

@Deployment
public static Archive<?> createDeployment() {
    Archive<?> archive = ShrinkWrap.create(JavaArchive.class)
            .addPackages(true, "<package>")
            .addAsManifestResource("META-INF/MANIFEST.MF", "MANIFEST.MF")
            .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
}

MANIFEST.MF выглядит следующим образом

Manifest-Version: 1.0
Dependencies: org.infinispan.infinispan-tree, org.infinispan

infinispan-tree — это модуль, который был добавлен в jboss вручную.

Чтобы проверить, что это не конфигурация модуля, эти два модуля были сделаны глобальными в файле standalone.xml, и о чудо, все заработало нормально.

Даже изменение только org.infinispan (включенного в JBoss 7.x) на неглобальный и попытка сослаться на него из MANIFEST.MF не сработали.

Чего не хватает?


person drone.ah    schedule 05.12.2013    source источник
comment
Где находится ваш META-INF/MANIFEST.MF по отношению к вашему тестовому классу?   -  person James R. Perkins    schedule 05.12.2013
comment
они оба находятся в корне (т.е. /META-INF/MANIFEST.MF, /package/classes, /package/testclasses)   -  person drone.ah    schedule 06.12.2013
comment
Вам это помогает? community.jboss.org/thread/173503?_sscc=t   -  person Vrashabh Irde    schedule 17.12.2013


Ответы (2)


Об аналогичной проблеме сообщалось во время «установки maven» [1]

Было предложено следующее решение: - прямо указать зависимости.

Использование:
.addAsManifestResource("Зависимости: org.infinispan.infinispan-tree, org.infinispan","MANIFEST.MF");

Вместо: .addAsManifestResource("META-INF/MANIFEST.MF", "MANIFEST.MF");

[1] https://issues.jboss.org/browse/ARQ-679

person Mitesh Pathak    schedule 17.12.2013
comment
Спасибо. Однако это, к сожалению, не сработало. Выдает ошибку, что Зависимости: ... не могут быть найдены. Глядя на JavaArchive API, нет способа описания содержимого вместо имени файла. Кроме того, в проблеме, на которую вы ссылаетесь, говорится о сбое теста только при установке mvn. Это не работает для меня, даже когда я просто запускаю тест. Интересно, была ли возможность использования этого метода удалить пост версии 1.0.0.CR6 - person drone.ah; 17.12.2013

Все оказалось намного проще.

Даже с .addAsManifestResource ИЛИ .setManifest MANIFEST.MF был автоматически сгенерирован Maven.

Это было решено с помощью следующего раздела в pom.xml вместо использования пользовательского MANIFEST.MF и использования .setManifest("META-INF/MANIFEST.MF"); MANIFEST.MF генерируется автоматически, и в папке ресурсов нет настроенной копии (во избежание путаницы, поскольку она все равно была проигнорирована)

<build>
    <plugins>
     <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-jar-plugin</artifactId>
       <configuration>
          <archive>
             <manifestEntries>
                <Dependencies>
                org.infinispan, 
                org.infinispan.infinispan-tree export,
                </Dependencies>
             </manifestEntries>
          </archive>
       </configuration>
     </plugin>
    </plugins>
</build>
person drone.ah    schedule 17.12.2013