gpt4 book ai didi

Eclipse 在 Tomcat 上部署未经过滤的 .WAR-Archive

转载 作者:行者123 更新时间:2023-11-28 23:29:58 25 4
gpt4 key购买 nike

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

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

但是当我想使用Eclipse 的“在服务器上运行” 来运行应用程序时,出现异常:

[..] nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.security.web.authentication.logout.LogoutFilter]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: ${security.casEntryPoint.logoutSuccessUrl} isn't a valid redirect 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 的“在服务器上运行”将未过滤的应用程序部署在 tomcat 服务器上。我做错了什么?

更新:我点击了这个链接 Run Maven webapp on server from Eclipse with properties injection from profile ,但我仍然收到相同的异常。

这里是我项目配置的调整:Active Maven Profiles

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

感谢您的帮助!

最佳答案

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

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

Web_Deployment_Assembly.PNG

关于Eclipse 在 Tomcat 上部署未经过滤的 .WAR-Archive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31803870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com