Свойства в войне не получили решимости при создании с использованием термоусадочной пленки

Я пытаюсь построить файл войны, используя shrinkwrap, как показано ниже, для тестирования интеграции с помощью Arquillian,

WebArchive war = ShrinkWrap.create(MavenImporter.class).loadPomFromFile("pom.xml").importBuildOutput().as(WebArchive.class);

При развертывании я получаю сообщение об ошибке типа

address: ([("deployment" => "oss.war")]) - failure description: {"JBAS014771: Services with missing/unavailable dependencies" => ["jboss.persistenceunit.\"oss.war#primary\".__FIRST_PHASE__ is missing [jboss.naming.context.java.${datasource_JNDI_Name}]"]}

${datasource_JNDI_Name} переменная, значение которой находится в файле pom.

Я думаю, проблема в файле WAR, переменная, которая есть в jboss-web.xml, persistence.xml и т.д., который зависит от свойств maven, не решаются.

Посоветуйте, пожалуйста, почему не решаются проблемы в WAR-файле. Заранее спасибо.

1 ответ

Я знаю, что это может быть немного поздно для вас, но может помочь кому-то еще, поэтому мы идем:

У меня была похожая проблема с объявлением моего контекста в файле glassfish-web.xml, который был решен с помощью maven-war-plugin со свойством ${project.artifactId}.

Поскольку мы копируем некоторые зависимости как persistence.xml, например, во время shrinkwap.create, это не решается с помощью фильтрации maven.

Есть два способа, которые я мог бы найти, которые сработали:

1: Отображение вашего каталога как resources/testResources и добавление фильтрации. Это работает, только если вы используете какой-нибудь подключаемый модуль maven-plugin или maven, который разрешается с помощью shrinkwap-resolver/Maven.resolver(), монтирующего ваш архив.

2: (Я пошел по этому пути). Как мы видим в удаленных примерах Arquillian, файл persistence.xml дублируется как test-persistence.xml и заменяет оригинальный файл persistence.xml во время процесса упаковки в термоусадочную пленку. Я скопировал свой glassfish-web.xml как test-grassfish-web.xml в src/test/resources-glassfish-remote и определил фиксированное значение для моего тестового контекста, используя

.addAsWebInfResource("test-glassfish-web.xml", "WEB-INF/glassfish-web.xml")

поместить его "вручную разрешено" в мой веб-архив. Думаю, это не самый элегантный способ решения этой проблемы, но он сэкономил мне много времени и работал быстро и хорошо.

Вы можете найти полные примеры, используя test-persistence.xml, здесь http://arquillian.org/guides/getting_started_rinse_and_repeat/ и здесь https://github.com/arquillian/arquillian-examples

Надеюсь, что это поможет кому-то избежать проблем и потерянного времени, исследуя эти нерешенные свойства maven при развертывании в термоусадочную пленку.

Другие вопросы по тегам