Eclipse在Tomcat

时间:2015-08-04 08:05:48

标签: eclipse spring maven tomcat

我遇到以下问题:我想使用maven配置文件和maven-war-plugin来过滤我的web应用程序,这样只需单击一下即可在实时或开发服务器上部署它

当我通过Eclipse(Maven-Plugin)构建.WAR-archive,然后通过tomcat-manager-interface手动将其部署到tomcat-server上时,我的应用程序按预期工作。 (所有变量都在生成的.WAR-archive中正确替换)

但是,当我想使用 Eclipse" Run on Server" 运行应用程序时,会发生异常:

  

[..]嵌套异常是org.springframework.beans.BeanInstantiationException:无法实例化bean类[org.springframework.security.web.authentication.logout.LogoutFilter]:构造函数抛出异常;嵌套异常是java.lang.IllegalArgumentException:$ {security.casEntryPoint.logoutSuccessUrl}不是有效的重定向URL

这是我的pom.xml中maven配置文件的配置:

<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

这是settings.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&#34; s&#34;在服务器上运行&#34;在tomcat-server上部署未过滤的应用程序。 我做错了什么?

更新的 我按照此链接Run Maven webapp on server from Eclipse with properties injection from profile,但我仍然收到相同的例外。

以下是我项目配置的调整:Active Maven Profiles

更新: Eclipse(Luna)将webapplication部署到workspace / .metadata / .plugins / .org.eclipse.wst.server.core / tmp0 / wtpwebapps / applicationName。在那里部署的settings.xml仍包含未过滤的变量,而生成的.WAR-Archive(位于workspace / applicationName / target)具有正确过滤的settings.xml。这怎么可能?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

虽然这不是最佳解决方案,但我找到了解决问题的解决方法。因此,我按照目标文件夹的WEB-INF-Folder进行部署的方式调整了项目的部署程序集设置。

您可以通过右键单击项目并选择“属性”来执行此操作。以下是我如何调整设置的屏幕截图:

Web_Deployment_Assembly.PNG