2015-08-04 3 views
0

У меня есть следующая проблема: я хочу использовать профили maven и плагин maven-war для фильтрации моего веб-приложения, так что это всего лишь один клик, чтобы развернуть его либо в режиме реального времени, или на сервере разработки.Eclipse развертывание нефильтрованного .WAR-Archive на Tomcat

Когда я создаю .WAR-архив через Eclipse (Maven-Plugin), а затем вручную развертываю его на tomcat-сервере через интерфейс tomcat-manager, мое приложение работает так, как ожидалось. (Все переменные правильно заменены внутри сгенерированной .WAR-архив)

Но когда я хочу запустить приложение с помощью в Eclipse «Запуск на сервере», происходит исключение:

[..] Вложенное исключение - org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр класса bean [org.springframework.security.web.authentication.logout.LogoutFilter]: конструктор сделал исключение; Вложенное исключение составляет java.lang.IllegalArgumentException: $ {security.casEntryPoint.logoutSuccessUrl} не является допустимым Перенаправление URL

Это конфигурация профилей Maven в моем pom.xml:

<profiles> 
<profile> 
    <id>prod</id> 
    <build> 
     <filters> 
      <filter>src/main/filters/dfnaaiAgreement-prod.properties</filter> 
     </filters> 
    </build> 
</profile> 
<profile> 
    <id>devLocal</id> 
    <build> 
     <filters> 
      <filter>src/main/filters/dfnaaiAgreement-devLocal.properties</filter> 
     </filters> 
    </build> 
</profile> 

Это пример записи для * .properties файла:

security.casEntryPoint.logoutSuccessUrl = https://example_entry/please_logmeout 

Это одна запись в себе ttings.xml, который должен быть заменен значением в * .properties файле:

<security:logout logout-url="/logout" logout-success-url="${security.casEntryPoint.logoutSuccessUrl}" /> 

и это конфигурация для Maven плагин (в pom.xml), который используется для фильтрации файлов конфигурации:

<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-war-plugin</artifactId> 
<version>2.2</version> 
<configuration> 
    <warName>dfnaaiAgreement</warName> 
    <webResources> 
     <resource> 
      <directory>${basedir}/src/main/webapp</directory> 
      <filtering>true</filtering> 
      <includes> 
       <include>**/*.xml</include> 
       <include>**/*.properties</include> 
      </includes> 
     </resource> 
    </webResources> 
</configuration> 

Это моя конфигурация Maven сборки:

Maven-Build configuration (Sorry, not enough reputation to post images directly)

Кажется, что «запуск на сервере» eclipse развертывает нефильтрованное приложение на tomcat-сервере. Что я делаю неправильно?

Update: Я последовал за ссылку Run Maven webapp on server from Eclipse with properties injection from profile, но i'am продолжает получать то же исключение.

Вот настройка конфигурации моего проекта: Active Maven Profiles

Update: Затмение (Luna) развертывает WebApplication в рабочую область/.metadata/.plugins/.org.eclipse.wst.server.core/tmp0/wtpwebapps/ApplicationName. Устанавливаемый там settings.xml по-прежнему содержит нефильтрованные переменные, тогда как сгенерированный .WAR-архив (который находится в рабочей области/applicationName/target) имеет правильно отфильтрованные settings.xml. Как это возможно?

Благодарим за помощь!

+0

http://stackoverflow.com/questions/23220630/run-maven-webapp-on-server-from-eclipse-with-properties-injection- from-profile? rq = 1 – aniugne

+0

О, извините, я не нашел эту тему. Спасибо, что решает мою проблему! – simho

+0

К сожалению, я был неправ. Он все еще не работает. – simho

ответ

0

Хотя это не оптимальное решение, я нашел обходное решение для решения моей проблемы.Поэтому я скорректировал параметры сборки развертывания проекта таким образом, чтобы WEB-INF-Folder из целевой папки был взят для развертывания.

Вы можете сделать это, щелкнув по экрану своего проекта и выбрав «Свойства». Вот скриншот того, как я настроил параметры:

Web_Deployment_Assembly.PNG

Смежные вопросы