Свойства в войне не получили решимости при создании с использованием термоусадочной пленки
Я пытаюсь построить файл войны, используя 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 при развертывании в термоусадочную пленку.