阅读本文的时候,相信你已经喜欢上了Maven优美的管理方式, 但却为构建webapp而需手动发布到Tomcat发愁,maven插件可以帮你优雅的解决这个问题。笔者最近因为项目需要,和team成员对gringotts原有项目进行改造,从ant移植到maven,本来是件很简单的事情,但因为关联到josso单点登陆,折腾了好久,现将整个过程以及遇到的一些问题做纪录,希望给碰到类似问题的同学一些参考。
1 安装josso agent
去官网下载,然后配置。请参考 http://lelglin.iteye.com/admin/blogs/1866968
2.maven tomcat插件
- Tomcat Maven plugin
- Cargo plugin
我首先试用了Tomcat Maven plugin,非常便利,但是他运行的tomcat是内嵌的,无法加载我们需要josso agent。
pom.xml文件增加配置
<build> <plugins> <!-- tomcat --> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat6-maven-plugin</artifactId> <version>2.0</version> </plugin> </plugins> </build>
然后google查找maven tomcat插件运行外部tomcat的方法,网上确实也找到一下类似的问题,没有合适的解决方案,放弃。
然后我们又尝试了Cargo plugin,它是一个基于标准方式发布Web应用程序到Java EE容器的瘦包装器,它能发布到多种Web服务器,如Geronimo、Glassfish、JBoss、Tomcat、Jetty、WebLogic等。这正是我们想要的。
配置
<build> <finalName>projectName</finalName> <plugins> <plugin> <groupId>org.codehaus.cargo</groupId> <artifactId>cargo-maven2-plugin</artifactId> <configuration> <wait>true</wait> <container> <containerId>tomcat6x</containerId> <type>installed</type> <home>/Library/Tomcat</home> </container> <configuration> <type>existing</type> <home>/Library/Tomcat</home> <properties> <cargo.tomcat.manager.url>https://localhost:8080/manager</cargo.tomcat.manager.url> <cargo.remote.username>admin</cargo.remote.username> <cargo.remote.password>password</cargo.remote.password> <cargo.jvmargs>-Djava.security.auth.login.config="/Library/Tomcat/conf/jaas.conf"</cargo.jvmargs> </properties> </configuration> </configuration> <executions> <execution> <id>start-container</id> <phase>pre-integration-test</phase> <goals> <goal>deployer-deploy</goal> <!-- Only local containers can be started <goal>start</goal> --> </goals> </execution> <execution> <id>stop-container</id> <phase>post-integration-test</phase> <goals> <goal>deployer-undeploy</goal> <!-- Only local containers can be started <goal>stop</goal> --> </goals> </execution> <execution> <id>verify-deploy</id> <phase>install</phase> <goals> <goal>deployer-deploy</goal> </goals> </execution> <execution> <id>clean-undeploy</id> <phase>pre-clean</phase> <goals> <goal>deployer-undeploy</goal> <!-- Only local containers can be started <goal>stop</goal> --> </goals> </execution> </executions> </plugin> </plugins> </build> <dependencies>
问题和注意事项:
1.传递jvm参数,http://lelglin.iteye.com/admin/blogs/1866968 上的方式行不通,需要在<cargo.jvmargs>
<configuration> <type>existing</type> <home>/Library/Tomcat</home> <properties> <cargo.tomcat.manager.url>https://localhost:8080/manager</cargo.tomcat.manager.url> <cargo.remote.username>admin</cargo.remote.username> <cargo.remote.password>password</cargo.remote.password> <cargo.jvmargs>-Djava.security.auth.login.config="/Library/Tomcat/conf/jaas.conf"</cargo.jvmargs> </properties> </configuration>
2 安装josso agent的时候,会自动修改tomcat安装目录下server.xml
原本的这一行会被注释掉,改用josso自己的realm实现,这样就无法登陆tomcat manager,也就是无法通过插件部署。
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
josso agent修改后的配置
<Realm appName="josso" className="org.josso.tc60.agent.jaas.CatalinaJAASRealm" debug="1" roleClassNames="org.josso.gateway.identity.service.BaseRoleImpl" userClassNames="org.josso.gateway.identity.service.BaseUserImpl"/>
后来shijun同学发现 ,可以在某个context下面配置jossorealm实现,这样josso agent能够拦截到该context下的request,又不影响tomcatmanager管理应用,具体如下
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> <Valve appName="josso" className="org.josso.tc60.agent.SSOAgentValve" debug="1"> </Valve> <Context path="/apiConsole" docBase="/Library/Tomcat/webapps/apiConsole" debug="1" reloadable="true"> <Realm appName="josso" className="org.josso.tc60.agent.jaas.CatalinaJAASRealm" debug="1" roleClassNames="org.josso.gateway.identity.service.BaseRoleImpl" userClassNames="org.josso.gateway.identity.service.BaseUserImpl"/> </Context>
参考
http://jdonee.iteye.com/blog/774387
http://cargo.codehaus.org/Configuration+properties
相关推荐
通过阅读源码,你可以了解到插件如何与Maven生命周期集成,如何解析配置,以及如何与Tomcat通信来执行部署和运行任务。源码分析可以帮助开发者解决遇到的问题,或者对其进行定制以满足特定需求。 在实际使用中,...
接下来,在项目的`pom.xml`文件中添加Maven Tomcat插件的相关配置: ```xml <groupId>org.codehaus.mojo <artifactId>tomcat-maven-plugin <version>1.1 <url>http://10.200.3.82:8888/manager</url> ...
使用 tomcat8-maven-plugin 插件可以简化项目的部署过程,无需手动配置 Tomcat 服务器。该插件可以自动将项目部署到 Tomcat 服务器上,并且可以自动配置 Tomcat 服务器的 settings。 结论 tomcat8-maven-plugin ...
在springMVC 项目中存在两个web项目,一个前台展示系统,一个后台管理系统,前台展示需要用到后台上传的图片,为了能让前台使用,那么就需要给前台tomcat配置静态资源路径,这是需要改造tomcat的插件包, ...
首先,我们需要在Maven的`pom.xml`文件中添加Tomcat插件的配置。这个插件通常选择`maven tomcat7-maven-plugin`或`maven tomcat9-maven-plugin`,具体取决于你的Tomcat版本。以下是一个基本配置示例: ```xml ...
Tomcat插件通常指的是`maven-tomcat-plugin`或`tomcat7-maven-plugin`,它允许开发者在Maven构建流程中直接部署应用程序到本地或远程的Tomcat服务器。例如,以下配置可以在打包完成后自动部署到本地Tomcat: ```xml...
本文将详细介绍如何在IntelliJ IDEA中配置Maven和Tomcat,以便进行高效且便捷的开发工作。 首先,让我们从Maven配置开始。Maven通过使用POM(Project Object Model)文件来管理项目的依赖关系,简化了构建过程。在...
一旦所有配置都完成,Jenkins将能够自动从Git仓库获取代码,使用Maven进行构建,然后通过Tomcat Maven插件将应用部署到远程Tomcat服务器上。这个自动化流程显著提高了开发效率,减少了手动部署的错误和时间消耗。 ...
maven-tomcat-plugin让maven与tomcat配合得很好。它可以把应用部署到Tomcat服务器,也可以把tomcat作为内嵌服务器启动,就像jetty一样。 使用JPDA启动tomcat的远程调试功能。这样就能与eclipse配合起来,轻松地实现...
通过在pom.xml文件中添加相应插件配置,开发者可以在命令行中执行简单的命令,如`mvn tomcat7:run`,即可启动Tomcat并自动部署项目。 **部署流程:** 1. 使用Maven进行编译、测试和打包,生成WAR文件。 2. 配置...
本教程将详细介绍如何安装Maven,以及如何在Eclipse集成Maven和Tomcat,帮助开发者更高效地进行Java Web项目的开发。 **一、Maven的安装** 1. **下载Maven**: Maven的安装包可以从官方网站Apache Maven ...
在maven环境使用tomcat插件启动项目时,可以使用该命令修改tomcat插件为https环境。一般作为本地开发环境改为https应用。 线上则需要另外安装tomcat,并且修改server.xml实现https。 文档里只说明了maven的tomcat...
这个过程涉及到了源码管理和自动化构建工具Maven,以及集成开发环境Eclipse中的服务器适配器Tomcat,它们共同助力实现项目的热部署,即代码修改后无需重启服务器即可看到更新效果。 首先,Maven是一个强大的项目...
在mac下安装JDK,STS后,需要进行相关配置,该文档包含1.Tomcat的配置,2.Maven的配置,3.helloworld的创建及运行4.上述三个文档的所有相关软件包,按照文档一步步执行,即可完成helloworld的运行
标签中提到的"apache maven maven的插件"表明了主题与Apache Maven及其插件系统相关。Maven的插件系统允许开发者执行各种任务,如编译源代码、打包应用、执行测试、生成文档等。插件通过目标(Goals)来实现特定的...
在pom.xml文件中,我们需要添加Tomcat插件配置,以便实现Maven热部署。首先,我们需要添加以下配置: ```xml <id>tomcat7 <username>tomcat <password>tomcat ``` 这里,我们添加了一个名为tomcat7的服务器...
在 IDEA 中创建 Maven 项目时,可能会遇到 Tomcat 配置错误的问题,本文将详细介绍 Tomcat 配置遇到的错误、错误原因、解决方案,并讨论 Maven 项目的创建、版本选择、Maven 的 Tomcat 配置等相关知识点。...
本篇文章将详细讲解"Eclipse开发Java程序必备插件",包括Maven、Tomcat和SVN插件的用途、安装与使用。 首先,Maven是Apache软件基金会开发的一个项目管理和综合工具。Maven插件使得Eclipse能够更好地管理和构建Java...