java进阶之-Maven,svn,git,maven合拼多个项目
git的使用介绍(写很容易懂得哦)
缪雪峰写的git介绍我看完感觉特别好:https://www.liaoxuefeng.com/wiki/896043488029600
maven合拼多个项目(写得很好哦)
MAVEN作用:统一开发规范与工具;统一管理jar包
1.下载MAVEN 下载绿色版的面安装
2.环境配置
eclipse想要用maven需要加载maven插件才能对项目管理:分类,布局
1)环境变量
MAVEN_HOME:C:\java\apache-maven-3.2.5(maven文件根路径)
Path:添加%MAVEN_HOME%/bin
2)配置文件:config/setting.xml
1)修改更新到本地资源库: <localRepository>C:\java\apache-maven-3.2.5\repository</localRepository>
2)修改默认的中央仓库镜像:在settings.xml文件中的“<mirrors>
之后项目中需要的jar包会先从本地资源库中查找,没有的话就去默认的中央仓库镜像中查找
eclipse适配:最新版的自己就适配maven,只需配置settings.xml的位置就好了;若是不是最新版的还需要配置Installations定位到Maven的根路径
3.使用方法
Maven常用命令:
. 创建Maven的普通java项目:
mvn archetype:create -DgroupId=packageName -DartifactId=projectName
. 创建Maven的Web项目:
mvn archetype:create -DgroupId=packageName -DartifactId=webappName-DarchetypeArtifactId=maven-archetype-webapp
. 编译源代码: mvn compile
. 编译测试代码:mvn test-compile
. 运行测试:mvn test
. 产生site:mvn site
. 打包:mvn package
. 在本地Repository中安装jar:mvn install
. 清除产生的项目:mvn clean
. 生成eclipse项目:mvn eclipse:eclipse
. 生成idea项目:mvn idea:idea
. 组合使用goal命令,如只打包不测试:mvn -Dtest package
. 编译测试的内容:mvn test-compile
. 只打jar包: mvn jar:jar
. 只测试而不编译,也不测试编译:mvn test -skipping compile -skipping test-compile
( -skipping 的灵活运用,当然也可以用于其他组合命令)
. 清除eclipse的一些系统设置:mvn eclipse:clean
4.想要给项目添加
不用直接给项目添加jar包了可以直接在pom.xml中配置jar包,maven项目会自动从本地资源库中下载或者去maven中央仓库中查找下载
其中groupId是com,cn类似的,artifatId是项目名称
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
5.Spring+Mybatis+SpringMVC+Maven+MySql搭建实例
链接:http://pan.baidu.com/s/1c163fbi 密码:mk4i
6.pom(Project Object Model)
1)pom.xml三个必须的字段:<groupId><artifactId><version>
groupId:工程组的标识;artifactId:工程标识;version:工程版本标识
<groupId>com.companyname.project-group</groupId> <artifactId>project</artifactId> <version>1.0</version>
2)plugins
3)goals
4)
7.生命周期
Maven有三套相互独立的生命周期:生命周期哪个步骤需要执行一般执行命令行
- Clean Lifecycle 在进行真正的构建之前进行一些清理工作。
- Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。
- Site Lifecycle 生成项目报告,站点,发布站点。
1)Clean Lifecycle:
1.pre-clean 执行一些需要在clean之前完成的工作
2.clean 移除所有上一次构建生成的文件
3.post-clean 执行一些需要在clean之后立刻完成的工作
注意:执行mvn post-clean会自动执行完pre-clean,clean
2)Site Lifecycle:
1.pre-site 执行一些需要在生成站点文档之前完成的工作
2.site 生成项目的站点文档
3.post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
4.site-deploy 将生成的站点文档部署到特定的服务器上
注意:常用到的是site阶段和site-deploy阶段
3)Default Lifecycle:Maven最重要的生命周期,绝大多数工作都在这里
• validate
• generate-sources
• process-sources
• generate-resources
• process-resources 复制并处理资源文件,至目标目录,准备打包。
• compile 编译项目的源代码。
• process-classes
• generate-test-sources
• process-test-sources
• generate-test-resources
• process-test-resources 复制并处理资源文件,至目标测试目录。
• test-compile 编译测试源代码。
• process-test-classes
• test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。
• prepare-package
• package 接受编译好的代码,打包成可发布的格式,如 JAR 。
• pre-integration-test
• integration-test
• post-integration-test
• verify
• install 将包安装至本地仓库,以让其它项目依赖。
• deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享。
注意:运行任何一个阶段的时候,它前面的所有阶段都会被运行,这也就是为什么我们运行mvn install 的时候,代码会被编译,测试,打包
每个阶段详解: http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
8.构建配置文件
作用:通过指定参数来做特定的事,可为不同的环境(生产环境和开发),定制构建方式
三种构建配置文件方式:项目级(Per Project),用户级(Per User),全局(Gobal)
配置文件一般存放中,
构建配置文件采用的是<profiles>节点
1)项目级
直接在pom.xml中节点<profiles>配置不同环境指定不同的构建方案
mvn test -Ptest:第一个test为Maven生命周期阶段,第2个test为为构建配置文件指定的<id>参数,这个参数通过-P来传输
2)用户级
%USER_HOME%/.m2;%M2_HOME%/conf/目录下的settings.xml文件;
增加<activeProfiles>属性
<settings xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
...
<activeProfiles>
<activeProfile>test</activeProfile>
</activeProfiles>
</settings>
mvn test:自动定位到activeProfiles指定的test配置文件
3)全局(设置变量方式)
<profile>
<id>test</id>
<activation>
<property>
<name>env</name>
<value>test</value>
</property>
</activation>
</profile>
mvn test -Denv=test:env变量value为test的那个配置文件
9.仓库
分为:本地仓库;中央仓库;远程仓库
1)本地仓库:
setting,xml配置localRepository节点
<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>C:/MyLocalRepository</localRepository>
</settings>
2)中央仓库:
maven的一个中央仓库由maven市区维护http://search.maven.org/#browse
也在setting.xml中配置repositories节点配置
<repositories>
<repository>
<id> central</id>
<name> Maven Repository Switchboard</name>
<layout> default</layout>
<url> http://repo1.maven.org/maven2</url>
<snapshots>
<enabled> false</enabled>
</snapshots>
</repository>
</repositories>
3)远程仓库:
在pom.xml中配置repositories节点
<repositories>
<repository>
<id>companyname.lib1</id>
<url>http://download.companyname.org/maven2/lib1</url>
</repository>
<repository>
<id>companyname.lib2</id>
<url>http://download.companyname.org/maven2/lib2</url>
</repository>
</repositories>
依赖搜索顺序:先查本地服务没有jar包时-》中央仓库没有jar包时-》远程仓库没有jar包时-》报错
10.插件plugins
Maven实际上就是依赖插件执行的框架;通常被用来
创建 jar 文件
创建 war 文件
编译代码文件
代码单元测试
创建工程文档
创建工程报告
语法:mvn [plugin-name]:[goal-name];如:mvn compiler:compile
分类:Build plugins构建时执行并配置;Reporting plugins网站生成过程执行并配置
常用的插件:
插件 描述
clean 构建之后清理目标文件。删除目标目录。
compiler 编译 Java 源文件。
surefile 运行 JUnit 单元测试。创建测试报告。
jar 从当前工程中构建 JAR 文件。
war 从当前工程中构建 WAR 文件。
javadoc 为工程生成 Javadoc。
antrun 从构建过程的任意一个阶段中运行一个 ant 任务的集合。
pom.xml配置:可以配置executions节点执行插件用途
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<id>id.clean</id>
<phase>clean</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo>clean phase</echo>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
11.代码创建工程:
C:\MVN>mvn archetype:generate -DgroupId=com.companyname.bank -DartifactId=consumerBanking -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
12.外部依赖在pom.xml中配置dependencies节点
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.</version>
<scope>test</scope>
</dependency> <dependency>
<groupId>ldapjdk</groupId>
<artifactId>ldapjdk</artifactId>
<scope>system</scope>
<version>1.0</version>
<systemPath>${basedir}\src\lib\ldapjdk.jar</systemPath>
</dependency>
</dependencies>
其中scope:指定作用域;systemPath:jar包下载到指定路径
13.创建工程文档;工程模板
命令行:C:\MVN>mvn site;mvn archetype:generate
14.快照:服务端的jar包老是更新最新版本,用它的pom.xml就需要不断地更新配置很麻烦就出现了快照
1)过程:提供jar包的服务端配置jar包时<version>配置的版本名字加上-SNAPSHOT:如<version>1.0-SNAPSHOT</version>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.</modelVersion>
<groupId>data-service</groupId>
<artifactId>data-service</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>health</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-</project.build.sourceEncoding>
</properties>
</project>
使用这个jar包快照pom.xml中配置:
<dependencies>
<dependency>
<groupId>data-service</groupId>
<artifactId>data-service</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
</dependencies>
2)命令行:强制获得最新快照:mvn clean package -U
15.构建自动化
一旦一个工程创建成功,其相关依赖工程也要开始重新构建工程从而保证其依赖项的稳定性
场景:一个 bus-core-api更新后,希望app-web-ui,app-desktop-ui两个从线也自动更新
app-web-ui
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.</modelVersion>
<groupId>app-web-ui</groupId>
<artifactId>app-web-ui</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>bus-core-api</groupId>
<artifactId>bus-core-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project> app-desktop-ui
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.</modelVersion>
<groupId>app-web-ui</groupId>
<artifactId>app-web-ui</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>bus-core-api</groupId>
<artifactId>bus-core-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project> bus-core-api
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.</modelVersion>
<groupId>bus-core-api</groupId>
<artifactId>bus-core-api</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
</project>
1)在三个线中配置快照-》2)
- 在 bus-core-api 的 pom 文件里添加一个编译目标来提醒 app-web-ui 工程和 app-desktop-ui 工程启动创建。->C:\MVN\bus-core-api>mvn clean package -U
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.</modelVersion>
<groupId>bus-core-api</groupId>
<artifactId>bus-core-api</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<build>
<plugins>
<plugin>
<artifactId>maven-invoker-plugin</artifactId>
<version>1.6</version>
<configuration>
<debug>true</debug>
<pomIncludes>
<pomInclude>app-web-ui/pom.xml</pomInclude>
<pomInclude>app-desktop-ui/pom.xml</pomInclude>
</pomIncludes>
</configuration>
<executions>
<execution>
<id>build</id>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<build>
</project>
16.依赖管理:没啥说的看看就是maven对多个pom之间的依赖关系
17.自动化部署:只用pom.xml配置就能全部被自动部署
使用Maven发布的插件
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.</modelVersion>
<groupId>bus-core-api</groupId>
<artifactId>bus-core-api</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<scm>
<url>http://www.svn.com</url>
<connection>scm:svn:http://localhost:8080/svn/jrepo/trunk/
Framework</connection>
<developerConnection>scm:svn:${username}/${password}@localhost::
common_core_api::code</developerConnection>
</scm>
<distributionManagement>
<repository>
<id>Core-API-Java-Release</id>
<name>Release repository</name>
<url>http://localhost:8081/nexus/content/repositories/
Core-Api-Release</url>
</repository>
</distributionManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.0-beta-</version>
<configuration>
<useReleaseProfile>false</useReleaseProfile>
<goals>deploy</goals>
<scmCommentPrefix>[bus-core-api-release-checkin]-<
/scmCommentPrefix>
</configuration>
</plugin>
</plugins>
</build>
</project>
元素 描述
SCM 配置 SVN 的路径,Maven 将从该路径下将代码取下来。
repository 成功构建出来的 WAR/EAR/JAR 或者其他的构建结果存放的路径。
plugins maven-release-plugin 用以自动化部署的过程。
18.Apache Maven Elipse IDE;Apache Maven NetBeans;Apache Maven IntelliJ IDEA
-------------------------------------------------------------
SVN:管理项目,用户团队合作
客户端配置:需要注意的是不要选择command....那一栏
1.新建库TortoiseSVN - Create repository here;
2.导入项目:import(在文件夹下空白处右键);checkout一般我们用的是checkout(文件夹直接checkout)能将最新版本更新到本地
3.更新工作目录:
空白处点击鼠标右键,选择“SVN Update“;显示更新了哪些内容,库版本是多少
4提交工作目录:
在做了修改,需要保存到库中时,用到提交操作:SVN Commit
5.svn在eclipse中使用
1).配置svn环境(Subclipse)
2)上传项目到project
在eclipse视图资源库中(Window/Show View)
3)在svn资源库空白位置选择新建资源库位置4)填好资源库位置服务器地址5)导入成功后出现导入的资源库
4)右键project/team/share project
java进阶之-Maven,svn,git,maven合拼多个项目的更多相关文章
- java linux安装jdk,git, maven
jdk8下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html mkdir ...
- 从零构建Java项目(Maven+SpringBoot+Git) #02 奥斯丁项目
前两天我说要写个项目来持续迭代,有好多小伙伴都表示支持和鼓励,项目的第一篇这不就来了么~我给项目取了个名字,英文名叫做:austin,中文名叫做:奥斯丁 名字倒没有什么特别的含义,我单纯觉得这个名字好 ...
- 使用Jenkins配置Git+Maven的自动化构建
Jenkins是一个开源的持续集成工具,应用Jenkins搭建持续集成环境,可以进行自动构建.自动编译和部署,非常方便. 在服务器比较少的情况下,Jenkins的优势并不明显,但是随着项目发展,服务器 ...
- IntelliJ IDEA 问题总结之中的一个 —— jar包、assets、maven、git
因为工作须要,这几天開始弃用eclipse,换idea.用了几天,idea确实有些地方比較方便.可是麻烦也是不少.并且网上相应的资料并没有eclipse那么多,非常多都是自己琢磨解决的,所以想弄个帖子 ...
- Jenkins Jenkins结合GIT Maven持续集成环境配置
Jenkins结合GIT Maven持续集成环境配置 by:授客 QQ:1033553122 安装Git插件 1 安装Git客户端 1 安装JAVA JDK及MAVEN 2 Jenkins JDK ...
- Docker+Jenkins+Maven+SVN搭建持续集成环境
Docker+Jenkins+Maven+SVN搭建持续集成环境 环境拓扑图(实验项目使用PHP环境) 发布流程图 环境说明 系统:Centos 7.4 x64 Docker版本:18.09.0 Ma ...
- java web开发入门九(Maven使用&idea创建maven项目)基于intellig idea
Maven 1.解决的问题 jar包的依赖和管理:版本.依赖关系等 自动构建项目 2.maven介绍 1.Maven是什么? Apache Maven是一个软件项目管理的综合工具.基于项目对象模型(P ...
- Jenkins+Maven+SVN快速搭建持续集成环境
http://www.cnblogs.com/sunzhenchao/archive/2013/01/30/2883289.htmlhttp://blog.csdn.net/pein_zero/art ...
- Eclipse+Tomcat+MAVEN+SVN项目完整环境搭建
1.JDK的安装 首先下载JDK,这个从sun公司官网可以下载,根据自己的系统选择64位还是32位,安装过程就是next一路到底.安装完成之后当然要配置环境变量了. ————————————————— ...
随机推荐
- urllib基本使用-Handler和自定义的opener()
""" 基本的urlopen()方法不支持代理.cookie等其他的HTTP/HTTPS高级功能.所以要支持这些功能: 使用相关的 Handler处理器 来创建特定功能的 ...
- Xamarin.Forms学习之位图(二)
上篇文章分享了如何加载网络图片和PCL中的图片,所以今天继续分享关于如何加载平台的内嵌图片,在这之前说一下上篇文章开头的一个问题:为什么不能加载UWP项目,这是因为我升级了UWP的SDK,而Xamar ...
- docker openvas
https://hub.docker.com/r/mikesplain/openvas/ Requirements DockerPorts available: 443, 9390, 9391 Usa ...
- Docker selinux
编辑/etc/sysconfig/docker文件,把OPTIONS='--selinux-enabled'的--selinux-enabled注释掉,也可以通过这个错误. 最大的问题就是Linux的 ...
- Java的默认构造函数调用
// 注意,这里不能是 public class OOO,否则编译无法通过,需把文件命名成 OOO.java class OOO { // 注意:如果不定义OOO(),那么Shapes(int i)编 ...
- js内置数据类型
JS 中分为七种内置类型,七种内置类型又分为两大类型:基本类型和对象(Object). 基本类型有六种: number , string , boolean , null , undefined , ...
- Linux运维-zabbix_agent最新版的yum安装
agentd端可以直接使用yum来进行安装 rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1. ...
- linux下查看cpu,内存,硬盘等硬件信息的方法
说明:Linux下可以在/proc/cpuinfo中看到每个cpu的详细信息.但是对于双核的cpu,在cpuinfo中会看到两个cpu.常常会让人误以为是两个单核的cpu. 一.linux CPU大小 ...
- Hadoop createSnapshot和deleteSnapshot命令
概述 HDFS快照是文件系统的只读时间点副本. 可以对文件系统的子树或整个文件系统进行快照. 快照的一些常见用例是数据备份,防止用户错误和灾难恢复.HDFS快照的实现是高效的: 快照创建是即时的:成本 ...
- OpenCV3计算机视觉+python(三)
使用OpenCV3处理图像 下面要介绍的内容都与图像处理有关,这时需要修改图像,比如要使用具有艺术性的滤镜.外插(extrapolate)某些部分.分割.粘贴或其他需要的操作. 不同色彩空间的转换 O ...