yesn 发表于 2017-1-21 09:51:01

maven 发布到tomcat 记录

 忙活了一个周末,终于把appfuse2.2.1通过maven的方式 发布到tomcat 中。特记录一下步骤,虽然最近更新比较慢,但是还是具有参考价值的。

[*]按照官网的通过mvn 命令下载源码。按照官方下载。
[*]将下载的源码 from "embedded mode" to full-source mode by running mvn appfuse:full-source from your project's root directory
[*]这里可以通过 mvn eclipse:eclipse 转换成eclipse 项目。但是这里主要采用maven的发布方式。先不转换成eclipse项目。
[*]通过eclipse的导入,这里采用从存在的maven 工程导入。
[*]eclipse maven 工程要点:
[*]

[*]project facet还是要设置成dynamic ;futher configuration 设置修改成src/main/webapp,默认的是dyanmic工程的webContent。
[*]当前项目->properties->deployment assembly 中设置 maven 的依赖库 部署的位置,这里要改为:WEB-INFO/lib
[*]build path 中默认的输出为:xxx/target/classes.这里的xxx 为工程名称。
[*]


[*]下面正式开始将工程编译后的源码直接发布到tomcat 中。主要有几下步骤,另外,tomcat7与先前的tomcat 发布方式也是不一样的。要注意。

[*]首先在tomcat的conf 文件夹tomcat-user.xml中,增加用户配置。
[*]如图,关键在于manager-script角色
[*]在工程pom 文件中增加maven tomcat的插件配置
[*]如下,其中url为tomcat管理地址,不同的容器,域名和端口可能不同,注意url的最后必须加上 /text 否则会出错; <path>标签代表工程的名称。     
<plugin > 
                   <groupId> org.apache.tomcat.maven</groupId > 
                         <artifactId> tomcat7-maven-plugin</artifactId > 
                         <version> 2.0-SNAPSHOT</version > 
                         <configuration>  
                               <url> http://localhost:8080/manager/text</url > 
                               <!-- 
                               <server>tomcat7</server>
                               -->
                               <path> /sectioncc</path >
                                     <username> admin</username > 
                                     <password> admin</password >
                         </configuration>  
   </plugin>   
[*]启动tomcat 。在运行maven的deploy命令之前,一定要先启动tomcat(直接进入tomcat的bin目录点击startup.bat)或者通过eclipse 的server 视图启动,否则会报:“Cannot invoke Tomcat manager: Connection refused” 错误 。(已验证)
[*]在工程或pom.xml上右键,maven build的goals中输入命令tomcat7:deploy即可发布,或在Run Configurations->Maven build新建一个命令,base directory里选择你的web project 或者通过run as ->maven build ,输入 tomcat7:deploy
[*]
[*]在 pom.xml 的configuration节点里面的url最后必须加上 /text ,否则,即使你在运行maven的deploy命令之前已经启动了tomcat,还是会报错:“Cannot invoke Tomcat manager: Server returned HTTP response code: 403 for URL: http://localhost:8080/manager/deploy?path=%2Fframework&war= ”(已验证)
常见错误:
[*]maven build 时出现有appfuse 单元测试的错误,可以先屏蔽掉pom.xml中单元测试的配置。如下图
[*]         <!--

                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>webtest-maven-plugin</artifactId>
                        <version>1.0.0</version>
                        <executions>
                            <execution>
                                <id>webtest-test</id>
                                <phase>integration-test</phase>
                                <goals>
                                    <goal>test</goal>
                                </goals>
                            </execution>
                            <execution>
                                <id>webtest-verify</id>
                                <phase>verify</phase>
                                <goals>
                                    <goal>verify-result</goal>
                                </goals>
                            </execution>
                            <execution>
                                <id>webtest-report-html</id>
                                <phase>post-integration-test</phase>
                                <goals>
                                    <goal>report</goal>
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
                            <host>${cargo.host}</host>
                            <port>${cargo.port}</port>
                            <sourcedirectory>src/test/resources</sourcedirectory>
                            <sourcefile>web-tests.xml</sourcefile>
                            <target>${webtest.target}</target>
                            <basepath>${project.build.finalName}</basepath>
                            <resultpath>target/webtest/webtest-results</resultpath>
                            <haltonfailure>false</haltonfailure>
                            <haltonerror>false</haltonerror>
                            <loglevel>fatal</loglevel>
                        </configuration>
                    </plugin>
                 -->
 

[*]建议可以删除多余的数据库配置,比如oracle,h2等。
[*]如果出现mysql 方言的bug,将pom.xml中的org.hibernate.dialect.MySQL5InnoDBDialect 修改为:MySQL5Dialect.
[*]发布成功的标志是:
页: [1]
查看完整版本: maven 发布到tomcat 记录