Maven使用(以新游戏大厅为例)
命名:
<groupId>cn.onlinepc.项目组</groupId> <artifactId>项目名称</artifactId> <version>版本</vernsion>
添加依赖:
所谓依赖就是开始时候所需要的包
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>3.0.6.RELEASE</version> </dependency>
添加中心库: 所谓中心库就是包存放的地方或者是代理的地方
<repository> <id>gamehall</id> <name>Repository hosting the gamehall</name> <url>http://192.168.75.11:8080/nexus-webapp-1.9.2.3/content/groups/public</url> <releases> <enabled>true</enabled> <updatePolicy>never</updatePolicy> <checksumPolicy>warn</checksumPolicy> </releases> <snapshots> <enabled>false</enabled> </snapshots> <layout>default</layout> </repository>
添加依赖包时,只需要添加你所需要的那个依赖包就可以了,这个依赖包的相关依赖可以不用加,maven默认会自动帮我们加好
添加自己依赖包时,可以上传到本地仓库,也可以上传到nexus,下面是一个例子
mvn install:install-file -Dfile=fckeditor-java-core-2.6.jar -DgroupId=fckeditor-java-core -DartifactId=fckeditor-core -Dversion=2.6 -Dpackaging=jar -DgeneratePom=true
当然nexus提供界面操作上传
maven上传到nexus
mvn deploy:deploy-file -DgroupId=org.apache.hadoop -DartifactId=hbase -Dversion=1.0 -Dpackaging=jar -Dfile=[path to file] -Durl=[url] -DrepositoryId=[id]
公司内部需要走代理访问外部的,所以在设置的时候也要加上代理 修改setting.xml文件
<proxy> <id>onlinepc</id> <active>true</active> <protocol>http</protocol> <host>192.168.11.254</host> <port>8080</port> </proxy>
当然一些模块化的结构管理,不同开发环境的设置和插件的使用等等都可以参考Maven的官方网站 http://maven.apache.org/
pom文件
Maven基本所有工作都是对pom.xml文件来进行操作的
<repositories> <repository> <releases> <enabled>false</enabled> <updatePolicy>always</updatePolicy> <checksumPolicy>warn</checksumPolicy> </releases> <snapshots> <enabled>true</enabled> <updatePolicy>never</updatePolicy> <checksumPolicy>fail</checksumPolicy> </snapshots> <id>codehausSnapshots</id> <name>Codehaus Snapshots</name> <url>http://snapshots.maven.codehaus.org/maven2</url> <layout>default</layout> </repository> </repositories>
- enabled表示这两个版本是否可用,snapshots是快照版,开发过程中经常使用。releases是发布版,部署上线的时候用
- updatePolicy 提示这个仓库的依赖包是否有更新的
- checksumPolicy 校验需要
- url是远程库的地址
在游戏大厅2里面使用nexus来代理,作为公司内部使用的仓库中心。
<distributionManagement> <downloadUrl></downloadUrl> <repository></repository> <site></site> </distributionManagement>
- distributionManagement部署管理
- downloadUrl提供别人下载你项目的url
- repository项目部署的地方
- site项目文文档部署的地方(游戏大厅使用这样来部署文档的,采用ftp方式上传)
这样就很好的控制项目的部署,当然有很多种方式可以处理这样的问题,可以写一个插件处理,也可以结合hudson使用脚本处理(游戏大厅暂时使用这种方式来处理)。
<build> <sourceDirectory>${basedir}/src/main/java</sourceDirectory> <scriptSourceDirectory>${basedir}/src/main/scripts</scriptSourceDirectory> <testSourceDirectory>${basedir}/src/test/java</testSourceDirectory> <outputDirectory>${basedir}/target/classes</outputDirectory> <testOutputDirectory>${basedir}/target/test-classes</testOutputDirectory> ... </build>
观察这些都是输出路径,但是一般我们会按照maven的规范来做。
<properties> <spring.version>2.5.6</spring.version> </properties>
- 对于一些像spring的多个包的,我们需要保存版本一致,可以加上properties
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency>
- 依赖版本可以写属性读取的方式
把spring抽离出来,单独作为一个项目来处理,写一个新的pom
<project> <modelVersion>4.0.0</modelVersion> <groupId>cn.onlinepc.commons</groupId> <artifactId>spring-dependencies-module</artifactId> <packaging>pom</packaging> <properties> <spring.version>2.5.6</spring.version> </properties> <version>${spring.version}</version> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> </dependencies> </project>
运行mvn install 弄好到本地,或者上传到私服
<properties> <springversion>2.5.6</springversion> </properties> <dependencies> ...... <dependency> <groupId>cn.onlinepc.commons</groupId> <artifactId>spring-dependencies-module</artifactId> <type>pom</type> <version>${springversion}</version> </dependency> ........ </dependencies>
引入到项目里面就可以了,同样可以使用在不同应用之间的一些client包的调用
项目上传到nexus上,pom.xml配置
<distributionManagement> <repository> <id>snapshots</id> <name>pcgroup repository</name> <url>http://192.168.75.11:8080/nexus-webapp-1.9.2.3/content/repositories/snapshots/</url> </repository> </distributionManagement>
setting.xml配置
<servers> <server> <id>snapshots</id> <username>admin</username> <password>admin123</password> </server> </servers>
pom.xml与setting.xml的id要匹配,提供上传授权用的
maven命令
mvn clean package deploy
下载依赖包的源码
1. 使用maven命令:mvn dependency:sources 下载依赖包的源代码。 2. 使用参数: -DdownloadSources=true 下载源代码jar。 -DdownloadJavadocs=true 下载javadoc包。 mvn dependency:sources -DdownloadSources=true -DdownloadJavadocs=true
游戏大厅Maven使用总结
- 在游戏大厅项目中,我们更多的是使用Maven来进行项目的构建。
- 我们按照Maven的规范来进行项目开发,很方便地就可以构建了,只需要添加项目中使用到的一些依赖包就可以了。
- 搭建了nexus,项目构建速度也提高了很多。公司内部一些jar包也放到nexus里管理,svn就只存在代码了,可以省不少空间。
- 为Hudson持续集成提供了构建功能,Ant也可以构建,但是没有规范和依赖包的管理。
- 生成项目报告和测试报告,maven里面sonar这个插件可以输出更多的报告(项目存在的问题,风格规范,代码耦合问题,复杂度问题,测试报告问题)
- Maven在服务器安装的时候需要依赖jdk,一般设置JAVA_HOME就可以了。
- 结合eclipse开发时,好像少了自动生成功能,每次写完java类和jsp时都需要mvn package一下,才能通过resin访问修改后的内容,netbeans的话会好一点,只是java类需要package。
- 使用eclipse可能会出现,jdk 1.4 版本以上的问题,这里就需要设置eclipse.ini来解决。设置jdk的路径
使用中的一些优点
- maven当多个项目在一起工作的时候是比较有用的,只要把项目上传了,就可以提供给别的项目进行依赖。也不用手动地替换jar包,只需要在项目pom文件里面进行修改版本号就可以了
- lib里的jar包再也不用放在svn上了,我们可以统一管理
- 对版本号一目了然
- 对于依赖包可以自动下载和更新,这样我们就省了找依赖包的时间了
- 提供的功能也是比较多的,像打包功能,一般我们用ide进行打包,但是通常静态文件像js,css,img等是分开打包的,这样可以利用maven的打包插件进行自定义打包,同样能够打项目里独立的client包
- 提供源码就可以进行部署了(公司的情况不一样)
- 能够分析项目的一些情况,例如项目复杂度,耦合度和存在的一些风险等等。提供各种文档,如项目api和测试报告等等(sonar插件已经把这些功能整合得很好)
使用中的一些缺点
- 对于初学者来说,学习曲线较陡,不易理解
- 结合公司情况,更新jar包会出现这样的一个情况,就是更具依赖包版本的不同,我们更新系统就不能覆盖原来的jar包,这样只能让网络的同时帮忙删除,带来更新时候的麻烦(itbbs和bbs6.5更新同一样东西时的问题)
- 暂时不能结合ide环境所改即所得,就是在ide修改代码后,需要build一下才能进行页面上的代码更新,这一点会影响开发效率,(netbeans支持jsp文件所改即所得,eclipse好像不支持)
相关推荐
使用Maven导入Maven工程的视频教程 仅供学习交流! 后续会持续分享相关资源,记得关注哦! 使用Maven导入Maven工程的视频教程 使用Maven导入Maven工程的视频教程 使用Maven导入Maven工程的视频教程 使用Maven导入...
### Maven 使用文档详解 #### Maven 简介与特点 Maven 是一款强大的项目管理和构建工具,主要用于 Java 项目的管理。Maven 提供了统一的标准流程来管理项目的生命周期、依赖关系以及项目信息等,极大地提高了开发...
Maven使用`pom.xml`文件来定义项目配置。新建一个Java项目,创建`pom.xml`,添加项目依赖。然后在项目根目录下运行`mvn clean install`,Maven会自动下载依赖、编译代码、打包JAR,并将其存入本地仓库。 ### 七、...
2. **坐标**: Maven使用一组唯一的标识来定位项目,包括groupId、artifactId和version,这三者共同构成了一个项目的坐标。 3. **依赖管理**: Maven通过POM自动管理项目的依赖关系,可以避免jar地狱问题,减少手动...
Maven 使用 tomcat8-maven-plugin 插件 Maven 是一个流行的构建自动化工具,它可以帮助开发者自动完成项目的编译、测试、打包、部署等任务。 Tomcat 是一个流行的 Web 服务器,Maven 提供了一个插件 tomcat8-maven-...
maven详细使用教程 maven是一个跨平台的项目管理工具,主要用于基于java平台的项目构建,依赖管理。maven的主要作用是解决项目中存在的问题,如多个项目之间的依赖关系、测试方法的执行和仓库的管理等。 maven的...
**Idea + Maven 使用教程** 本教程旨在帮助初学者了解并掌握如何在 IntelliJ IDEA (简称Idea) 中集成和使用 Maven。Idea 是一款强大的Java集成开发环境,而 Maven 则是一个项目管理和综合工具,它简化了构建、依赖...
Maven 使用一种标准化的项目对象模型(Project Object Model,POM),通过XML格式来定义项目配置,使得开发人员能够轻松地管理和构建Java应用程序。本完全使用手册将深入探讨Maven的核心概念和功能。 1. Maven - 它...
IDEA 使用 Maven 创建 Web 项目详细教程 本教程将指导您使用 IDEA 创建一个 Maven Web 项目,从安装 Maven 到配置 Maven 环境、创建 Maven 工程、pom.xml 文件配置、依赖管理等。 1. 安装 Maven 在 IDEA 中使用 ...
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理...由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。
【标题】"maven之开源中国Maven库" 指的是使用 Maven,一个流行的Java项目管理和集成工具,与开源中国的Maven仓库进行交互。开源中国Maven库是中国的一个开源软件资源平台,提供了大量的开源Java库,使得开发者可以...
- **仓库**:Maven使用仓库来存储和管理构件。本地仓库存储本地开发过程中使用的构件,而中央仓库则包含了大量公共可用的构件。 - **依赖管理**:Maven通过依赖管理系统自动解析和下载项目所需的第三方库。 - **中央...
java视频教程之SVN Maven搭建自动化构建教程 Eclipse中使用Maven视频教程云盘下载链接
默认情况下,Maven使用`conf/settings.xml`文件进行配置。在这个文件中,你可以设置本地仓库的位置、远程仓库的URL等。例如,如果你希望将本地仓库改为`D:\Maven\repository`,则需要修改`settings.xml`中的`...
### Maven使用入门知识点详解 #### 一、Maven概述 **1.1 什么是Maven** Maven是一款用于Java项目的自动化构建工具,它的主要目的是帮助开发者简化构建过程,提高项目管理和构建的效率。通过Maven,可以实现项目的...
Maven使用约定优于配置的原则,意味着默认的构建过程和目录结构是预定义的,这极大地简化了项目管理工作。 在开发过程中,`mvn install`命令会编译源代码,运行测试,并将结果部署到本地仓库,使得其他项目可以通过...
在Java开发领域,Maven是一个广泛使用的项目管理和构建自动化工具,它简化了依赖管理和构建流程。Eclipse作为流行的Java集成开发环境(IDE),通过集成Maven插件m2eclipse,使得开发者可以在Eclipse内部方便地管理...
Maven3.9.4版本压缩包,仅供学习参考,更新版本请前往Maven官方下载;Maven3.9.4版本压缩包,仅供学习参考,更新版本请前往Maven官方下载;Maven3.9.4版本压缩包,仅供学习参考,更新版本请前往Maven官方下载;Maven...
在test阶段,Maven使用JUnit等测试框架运行项目中的单元测试;在package阶段,编译后的代码被打包成JAR、WAR或EAR等格式。 此外,Maven的插件系统非常强大,可以通过安装各种插件来扩展其功能,例如生成Javadoc,...
描述中的“maven.rar apache-maven-3.5.4”再次确认了这是与Maven 3.5.4相关的压缩文件,可能是用户下载以在本地环境中安装和使用Maven。 标签“maven”明确了讨论的主题,即Apache Maven,它是Java开发领域的重要...