`
squall140
  • 浏览: 139819 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

部署maven的一些要点、遇到的问题和心得体会

 
阅读更多

部署 maven 的一些要点、遇到的问题和心得体会

(图片看不了,可以下载doc文件)

 

 

 

 

文章转自:http://xianguiquan.iteye.com/blog/1506572

 

一、   maven 环境的搭建

1、 下载并配置 maven 可做可不做)

1 )到 http://maven.apache.org 下载 maven 的最新版本 , 并解压到某一目录 ( 假设是 d:\apache-maven);

 

2 )配置系统环境变量 :PATH 里面加上 d:\apache-maven\bin

3 )配置 JAVA_HOME jdk 目录

4 )在命令行上输入 mvn -version; 回车,如看到下面信息表示安装成功:

 

5 )在命令行上输入 mvn help:system; 回车,会在当前用户目录下 (win7 C:\Users\ 用户名 ,xp c:\documents and settings\ 用户名 ), 建立 .m2 目录。

 

2、 Eclipse 集成 maven

Update site http://m2eclipse.sonatype.org/sites/m2e , 全选安装就好了 , 重启 eclipse.

这样就安装了 eclipse 集成的 maven 插件,但建议使用在第一步下载 maven ,做法如下:进入 Preferences ——》 maven ——》 Installations ,点击“ Add ”添加 maven 的解压路径。

 

 

3 、建立 settings.xml 文件

如果没有做第一部操作,需要自己在当前用户目录下建立 .m2 目录。之后在 .m2 目录下建立 setting.xml 文件 . 注意: maven 基本使用指南 _ 小飞侠版 1.doc 》这个文档的配置是错误的, mvn install 时会提示:连接不了 180.200.3.76:8081 的错误。是 76 服务器的 maven 私服没有建好的原因

以下是我的配置,这里需要建立一个私服,在第四点介绍仓库 时会介绍。

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"

          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0

                      http://maven.apache.org/xsd/settings-1.0.0.xsd">

  <localRepository>F:\maven </localRepository>

  <profiles>

    <profile>

             <id>dev</id>

      <repositories>

             <repository>

                                   <id>releases</id>

                                         <url>http://localhost:8888/nexus-2.0.3/content/repositories/releases</url>

                                         <releases><enabled>true</enabled></releases>

                         <snapshots><enabled>true</enabled></snapshots>

                         </repository>      

        <repository>

         <id>central</id>

         <name>Central</name>

         <url>http://localhost:8888/nexus-2.0.3/content/repositories/central/</url>

         <releases><enabled>true</enabled></releases>

         <snapshots><enabled>true</enabled></snapshots>

        </repository>

      </repositories>

    </profile>

  </profiles>

  <activeProfiles>

    <activeProfile>dev</activeProfile>

  </activeProfiles>

         </settings>

其中下面标注为红色的 , 需要修改为自己的一个本地目录 , 以后所有的 jar 包都会放在这个下面 .

我们将项目所需要用到除源代码之外的东西(如 jar 包, tomcat,script 等都放在上面)通过这个文件, MAVEN 会从服务器会拉取 jar 包到本地,如果服务器上的包有更新,也会自动去更新,这样,当框架有新的版本出现时,不再需要我们手动去重新添加 jar 包这么麻烦。

 

二、 网厅环境的搭建 (我配置的是南昌网厅,遇到错误没有成功运行)

1、   检出 entity base java project   ,biz ejb project ,web 为动态网页工程, script javascript project 。都有红叉叉,没事,继续下面的步骤后就好了。

2、   检出完成后对每个工程 进行添加 maven-enable 依赖管理。

         选中项目右键“ Maven —》 Enable Depandency management” ,弹出以下界面:

 

这里需要设置 maven 的坐标,可以参考第四点的坐标 Group ID 使用 com.maywide.ibh artifact Id 是构件的 id ,设置为项目的名称, version 不用管 Packaging 除了 web project war 外,其他选 jar

3、   依赖管理。打开项目的 pom.xml 文件添加依赖项。如 biz_nanchang 的依赖配置如下:

< dependencies >

    < dependency >

      < groupId > com.maywide.ibh </ groupId >

      < artifactId > base </ artifactId >

      < version > 0.0.1 -SNAPSHOT </ version >

    </ dependency >

    < dependency >

      < groupId > com.maywide.ibh </ groupId >

      < artifactId > entity </ artifactId >

      < version > 0.0.1 -SNAPSHOT </ version >

    </ dependency >

    < dependency >

      < groupId > com.maywide.ibh </ groupId >

      < artifactId > lib95 </ artifactId >

      < version > 1.0 </ version >

    </ dependency >

    < dependency >

      < groupId > com.maywide.ibh </ groupId >

      < artifactId > lib96 </ artifactId >

      < version > 1.0 </ version >

</ dependency >

         添加了对 base entity 项目的依赖。其中 lib95 lib96 privatelib jar 包。我上传到私服时把它命名成这样了。 Base entity 项目也需要添加对 lib 的依赖项,在私服需要一个个 jar 包上传,所以需要一个个的添加依赖, lib 94 jar 吧,慢慢加呗。因为 maven 的依赖具有传递性的,所以 biz_nanchang 项目不需要添加对 lib jar 包的依赖。同理, web_nanchang 项目只需要添加对 biz_nanchang 的依赖就可以了。

         之后选择 mvn install 编译。

3 、把 biz_nanchang web_nanchang 项目的 jdk 改成 1.6 。进行 maven 下的操作时经常会把 jdk 给成 1.5 的,要检查一下。

 

4 、添加 maven 的依赖库到 Web Deployment Assembly 。网上说要这样做的,防止找不到 jar 包,不过这一步我没体现到它的用处。

 

 

5 Web 工程右键 ->Run as->Maven build, 这时会跳出一个页面:如图:

 

 

goals 输入: tomcat:run-war

 

VM 参数 : 添加

  -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n

点击 Apply ,之后 run 就可以执行了。但期间遇到错误 2 、错误 3 和错误 4 。错误 4 没有解决导致网站无法运行。

 

三、我掌握的 maven 的一下知识点。

1 、坐标

         Maven 把项目作为构件,每个构件定义一个坐标,由于区分其他的构件,配置依赖时只需加入这个坐标, maven 会先到本地仓库查找该构件,找不到就到远程仓库查找。

         坐标如下:

         GroupId :定义当前 maven 项目所属的实际项目。例如网厅项目使用 com.maywide.ibh

         ArtifactID: 构件的 ID ,一个 project 、模块的 id

         Version: 版本号。

         Packaging: 打包的方式。默认是 jar Web project 需要选择 war

 

2 maven 的依赖 < dependency > 标签里设置,需输入构件的坐标。 Maven 是传递依赖的。

3 、仓库

    仓库是存储构件的地方。 Maven 有本地仓库和远程仓库之分。

    1 本地仓库

    setting.xml <localRepository>F:\maven </localRepository> 里面配置本地仓库的位置 ,项目所需的构件会被下载到该目录。如网厅项目,我们可以打开该目录 F:\maven ,可以进入 com 文件夹—》 maywinde 文件夹—》 ibh 文件夹,看到我们的 base entity biz 等项目。

       2 远程仓库

       远程仓库分为中央仓库和私服。

       中央仓库 是全世界共享的一下常见的构件。

       私服 是一家公司、企业自己建的用于存储构件的的一个 maven 服务器 , 还有它也起到代理中央仓库的作用。目前最多人使用的是用 nexus 搭建 maven 私服。

 

私服的仓库分成 4 类: group (仓库组)、 hosted (宿主)、 proxy (代理)和虚拟( virtual )。 Nexus 默认已经有中央仓库的代理了。只需把下面提供的 url 配置到 setting.xml 文件了。

 

         我们要使用到的是宿主仓库,用于存放项目的 jar 包。 Maven 提供 Releases 仓库用于存放发布版本的构件; Snapshots 存放快照版本的构件; 3rd party 存放第三方构件。

         选择一个仓库,可以进入以下界面上传构件:

 

 

四、遇到的问题和解决

错误 1 [ERROR] Failed to execute goal on project biz_zhuhai: Could not resolve dependencies for project biz_zhuhai:biz_zhuhai:jar:0.0.1-SNAPSHOT: Failed to collect dependencies for [com.maywide.ibh:lib345:pom:1.0 (compile)]: Failed to read artifact descriptor for com.maywide.ibh:lib345:pom:1.0: Could not transfer artifact com.maywide.ibh:lib345:pom:1.0 from/to releases (http://localhost:9888/nexus-2.0.3/content/repositories/releases): Connection to http://localhost:9888 refused: Connection refused: connect -> [Help 1]

解决: 这是配置的 url 有错误或者是私服没有配好,导致构件下载时出错。如果没有 jar 包需要在私服里下载,可以不配置私服的,也就是可以把 setting.xml profiles 里的东西全部删除的。

 

错误 2 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.10:test (default-test) on project web_nanchang: There are test failures.

[ERROR]

[ERROR] Please refer to E:\maven\web_nanchang\target\surefire-reports for the individual test results.

 

    解决 :这是因为测试代码时遇到错误,它会停止编译。只需要在 pom.xml <project> 里添加以下配置,使得测试出错不影响项目的编译。

<build>

    <plugins>

      <plugin>

        <groupId>org.apache.maven.plugins</groupId>

        <artifactId>maven-surefire-plugin</artifactId>

        <configuration>

          <testFailureIgnore>true</testFailureIgnore>

        </configuration>

      </plugin>

    </plugins>

 </build>

 

         错误 3

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.1.1:war (default-war) on project web_nanchang: Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode) -> [Help 1]

[ERROR]

[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.

[ERROR] Re-run Maven using the -X switch to enable full debug logging.

[ERROR]

[ERROR] For more information about the errors and possible solutions, please read the following articles:

    解决 maven web 项目默认的 webroot 是在 src\main\webapp 。如果在此目录下找不到 web.xml 就抛出以上的异常。解决方法在 pom.xml 加入以下的配置。红色背景字体改成你网站的根目录。

<build>
<finalName>simple-webapp</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<webResources>
<resource>
<!-- this is relative to the pom.xml directory -->
<directory>WebContent </directory>
</resource>
</webResources>
</configuration>
</plugin>
</plugins>
</build>

 

错误 4 严重 : The web application [/web_nanchang] registered the JBDC driver [org.hsqldb.jdbc.JDBCDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.

2012-4-27 10:36:49 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc

严重 : The web application [/web_nanchang] registered the JBDC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.

还不知道怎样解决,导致运行不了。

错误 5

 

这个感觉怪怪的,遇过几次。把 java complier 改成 1.6 或者 disabled dependency manangent 后在 enable 它,搞着搞着就消失了。

 

五、心得体会:

       这次 maven 的部署用了一个多星期。起初对 maven 不了解,按着小飞侠的文档来部署,但那个文档是 boss2 的,而我配的是网厅项目,部署不成功又不知道什么原因。所以我觉得用 boss2 的配置文档去配置网厅的,应该先弄清楚每一步是什么意思。就比如 boss2 的项目为什么不需要检出 lib privatelib 呢,是因为私服里已经有了 jar 包,而网厅的没有,所以不理解地按着文档搞是白搞的。

       之后我上网找资料,还买了本书,去学习 maven 。结果学习了一些 maven 的知识,知道怎样配私服,还按书本部署了几个简单的项目。但当用到网厅的时候出现一些奇怪的错误,上网找答案,尝试了多种方法解决了一些错误。我觉得一个部署项目好郁闷啊,如果有个人请教一下或者讨论一下,会很高效。

 


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics