项目背景:maven项目,有多个环境:dev、sit、uat、pat。之前用的Idea和jetty,现在因项目需要切换成了eclipse和tomcat。
问题描述:maven打的是sit的包,war包放到tomcat下单独运行没有问题,但是用eclipse内置的tomcat启动就会报错,我看了项目根目录下.metadata.plugins\org.eclipse.wst.server.core\里的webapps项目文件,发现每次启动服务加载的都是dev.properties文件,但是之前maven打的war包里面是sit.properties文件呀,tomcat怎么又重置成dev了呢?eclipse里该怎么配置tomcat让它跟随环境加载.properties文件呢?有木有大神和我遇到的是同一个问题?
这了可以用maven的打包命令实现,再加上pom文件的配置
首先你要准备多个tomcat,随意你配置多少个。操作方式是:右键项目名称-->Properties-->找到Targeted Runtimes 里面就显示的是你配置的tomcat了。你如果想要让tomcat同时在eclipse上运行的话,你需要配置不同的端口号。
可以使用maven管理项目,在pom.xml文件中配置
多谢各位大神的回复,问题解决了,辛酸路程如下,真是一步一个坑:
1、先在项目pom文件中添加插件tomcat-maven-plugin,配置如下:
org.apache.tomcat.maven
tomcat7-maven-plugin
2.2
/helloworld
8888
UTF-8
2、maven运行tomcat命令:tomcat:run,profiles选择sit,本来以为这次就好了,结果又报错:
严重:Exception starting filter encodingFilter
java.lang.ClassCastException:org.springframework.web.filter.CharacterEncodingFilter cannot be cast to javax.servlet.Filter
解决办法:
tomcat-maven-plugin中的jar包与项目pom文件里的jar包冲突了,pom文件找到servlet-api,添加scope,配置如下:
javax.servlet
servlet-api
2.5
provided
3、再次启动服务,心想这次应该OK了吧,结果尼玛又报错:找不到jndi数据源
解决办法:
在项目/target/tomcat/conf目录下添加配置好数据源的context.xml和server.xml文件
4、再次启动服务,这次应该没报错了吧,结果又一次失望了,又报warning了:
[INFO] Downloading: https://repo.maven.apache.org/maven2/org/codehaus/mojo/tomcat-maven-plugin/maven-metadata.xml
[WARNING] Could not transfer metadata org.codehaus.mojo:tomcat-maven-plugin/maven-metadata.xml from/to central (https://repo.maven.apache.org/maven2)
Connect to repo.maven.apache.org:443 [repo.maven.apache.org/151.101.24.215] failed: Connection timed out:connect
......
......
一月 25,2018 3:05:49 下午 org.apache.coyote.http11.Http11Protocol init
信息:Initializing Coyote HTTP/1.1 on http-8888
一月 25:2018 3:05:49 下午 org.apache.coyote.http11.Http11Protocol start
信息:Starting Coyote HTTP/1.1 on http-8888
tomcat启动到这里,就停在这里不动了。。。。。
解决办法:把maven命令tomcat:run改为tomcat7:run。再运行就好,tomcat7还真是奇葩。。。。。。
咦,为什么step1和step3中的pom配置代码段格式给我转换没了呢,再发一次试试:
1、项目pom文件中添加插件tomcat-maven-plugin,配置如下:
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<path>/helloworld</path>
<port>8888</port>
<uriEncoding>UTF-8</uriEncoding>
</configuration>
</plugin>
3、pom文件找到servlet-api,添加scope,配置如下:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>