`

maven的部署、遇到的问题和心得体会

 
阅读更多
部署maven的一些要点、遇到的问题和心得体会
(图片看不了,可以下载doc文件)
一、   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的知识,知道怎样配私服,还按书本部署了几个简单的项目。但当用到网厅的时候出现一些奇怪的错误,上网找答案,尝试了多种方法解决了一些错误。我觉得一个部署项目好郁闷啊,如果有个人请教一下或者讨论一下,会很高效。
分享到:
评论

相关推荐

    Maven视频资料及如何学习心得体会

    **五、学习Maven的心得体会** 1. **实践出真知**:理论学习后,一定要动手实践,通过构建项目来加深理解。 2. **善用资源**:利用官方文档、在线教程、社区问答,遇到问题及时寻求解答。 3. **持续更新**:Maven...

    maven 简单示例+部署

    总结来说,Maven通过POM和生命周期简化了Java项目的构建和管理,同时,`distributionManagement`模块和相关的插件如`wagon-ftp`使项目部署变得简单易行。理解并掌握这些基本概念和操作,对于日常的Java开发工作至关...

    maven学习视频资料和自己心得

    里面有一套详细的2018maven最新视频和资料,同时也附带其他技术的分享渠道,里面有我自己对学习maven和软件开发技术的心得体会。

    maven 远程部署tomcat

    "Maven 远程部署 Tomcat 容器详解" Maven 远程部署 Tomcat 容器是指使用 Maven 插件将 Java Web 项目自动部署到 Tomcat 容器中,这样可以免去手工拷贝的重复工作。这种方法可以大大提高开发效率和项目部署速度。 ...

    ECLIPSE实现MAVEN项目自动部署NEXUS中

    如果输入错误的信息,部署时会遇到认证失败的问题。 #### 第三步:配置上传路径 接下来,我们需要在 Maven 项目的 `pom.xml` 文件中添加部署配置。具体来说,在 `&lt;distributionManagement&gt;` 节点中添加以下内容: ...

    Maven安装部署.docx

    【Maven 安装部署】 Maven 是一个强大的项目管理工具,主要负责Java项目的构建、依赖管理和项目信息管理。它的核心理念是通过一个统一的项目对象模型(Project Object Model,POM),使得项目的构建过程标准化,...

    maven项目跨机器部署

    myeclipse中maven的一些常见功能总结;借助maven将本地项目部署到远程tomcat容器。

    Intellij IDEA中使用maven filter遇到的问题

    在IntelliJ IDEA中使用Maven Filter功能时,开发者可能会遇到一些挑战,这些挑战主要涉及到配置、资源过滤以及与项目构建的交互。首先,我们来深入理解Maven Filter及其在IntelliJ IDEA中的应用。 Maven Filter是...

    Maven包和遇到的问题总结

    2. **生命周期与构建目标**: Maven的生命周期包括清理(clean)、编译(compile)、测试(test)、打包(package)、验证(install)和部署(deploy)等阶段。通过命令行执行`mvn clean install`即可完成整个生命...

    idea maven部署.docx

    标题 "idea maven部署" 涉及到的是在...总之,Idea通过Maven部署Web应用到Tomcat是一个集成了源代码管理、编译、打包和服务器交互的流程,涉及多个配置文件和步骤,理解并正确配置这些环节对于顺利部署应用至关重要。

    Maven项目中的热部署

    "Maven项目中的热部署"这一主题聚焦于如何在Maven管理的项目中实现快速的代码更新,无需每次都重新编译和启动应用。 热部署(Hot Deployment)是一种提高开发效率的技术,允许开发者在不中断应用运行的情况下更新...

    Maven心得,简单介绍maven。

    【Maven 心得与详解】 Maven 是一个由 Apache 开发的 Java 项目管理工具,主要用于构建、依赖管理和项目信息管理。它以其强大的自动化构建能力、约定优于配置的原则、跨平台支持以及丰富的插件生态,深受广大开发者...

    jenkins实现maven项目自动部署到tomcat

    通过以上步骤,我们不仅可以实现 Maven 项目的自动化部署,还可以进一步优化持续集成流程,提升软件开发的整体效率和质量。此外,通过不断实践和完善,可以逐步扩展到更复杂的部署场景和技术栈中。

    maven集成tomcat支持热部署

    在Java开发过程中,Maven作为一个强大的构建工具,能够有效地管理和构建项目,而Tomcat作为流行的Servlet容器,常常被用于运行和测试Web应用。本篇将详细介绍如何通过Maven集成Tomcat,实现项目的热部署,从而提高...

    linux环境 maven部署(超级 详细).html

    maven部署

    maven工程在tomcat服务器上的自动化部署

    在压缩包内的文档“maven工程在tomcat服务器上的自动化部署.docx”中,可能会更详细地介绍这些步骤,包括具体配置示例、命令行用法、可能遇到的问题及解决方案等。学习并实践这个过程,开发者可以提升工作效率,尤其...

Global site tag (gtag.js) - Google Analytics