java进阶之-Maven,svn,git,maven合拼多个项目


git的使用介绍(写很容易懂得哦)

缪雪峰写的git介绍我看完感觉特别好:https://www.liaoxuefeng.com/wiki/896043488029600

(写得很好哦)

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)修改更新到本地资源库:  C:\java\apache-maven-3.2.5\repository

    2)修改默认的中央仓库镜像:在settings.xml文件中的“

    之后项目中需要的jar包会先从本地资源库中查找,没有的话就去默认的中央仓库镜像中查找

  eclipse适配:最新版的自己就适配maven,只需配置settings.xml的位置就好了;若是不是最新版的还需要配置Installations定位到Maven的根路径

3.使用方法

  Maven常用命令: 

1. 创建Maven的普通java项目: 
mvn archetype:create -DgroupId=packageName -DartifactId=projectName 
2. 创建Maven的Web项目: 
mvn archetype:create -DgroupId=packageName -DartifactId=webappName-DarchetypeArtifactId=maven-archetype-webapp 
3. 编译源代码: mvn compile 
4. 编译测试代码:mvn test-compile 
5. 运行测试:mvn test 
6. 产生site:mvn site 
7. 打包:mvn package 
8. 在本地Repository中安装jar:mvn install 
9. 清除产生的项目:mvn clean 
10. 生成eclipse项目:mvn eclipse:eclipse 
11. 生成idea项目:mvn idea:idea 
12. 组合使用goal命令,如只打包不测试:mvn -Dtest package 
13. 编译测试的内容:mvn test-compile 
14. 只打jar包: mvn jar:jar 
15. 只测试而不编译,也不测试编译:mvn test -skipping compile -skipping test-compile 
( -skipping 的灵活运用,当然也可以用于其他组合命令) 
16. 清除eclipse的一些系统设置:mvn eclipse:clean

4.想要给项目添加

  不用直接给项目添加jar包了可以直接在pom.xml中配置jar包,maven项目会自动从本地资源库中下载或者去maven中央仓库中查找下载

其中groupId是com,cn类似的,artifatId是项目名称
mysql mysql-connector-java ${mysql.version}

5.Spring+Mybatis+SpringMVC+Maven+MySql搭建实例

链接:http://pan.baidu.com/s/1c163fbi 密码:mk4i

6.pom(Project Object Model) 

  1)pom.xml三个必须的字段:

  groupId:工程组的标识;artifactId:工程标识;version:工程版本标识

    com.companyname.project-group

    project

    1.0

  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) 

  配置文件一般存放中,

  构建配置文件采用的是节点

  1)项目级

    直接在pom.xml中节点配置不同环境指定不同的构建方案

    mvn test -Ptest:第一个test为Maven生命周期阶段,第2个test为为构建配置文件指定的参数,这个参数通过-P来传输

  2)用户级

    %USER_HOME%/.m2;%M2_HOME%/conf/目录下的settings.xml文件;

    增加属性

"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">
   ...
   
      test
   

    mvn test:自动定位到activeProfiles指定的test配置文件

  3)全局(设置变量方式)


   test
   
      
         env
         test
      
   

    mvn test -Denv=test:env变量value为test的那个配置文件

9.仓库

  分为:本地仓库;中央仓库;远程仓库

  1)本地仓库:

    setting,xml配置localRepository节点

"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">
      C:/MyLocalRepository

  2)中央仓库:

    maven的一个中央仓库由maven市区维护http://search.maven.org/#browse

    也在setting.xml中配置repositories节点配置

        
          
     central        
     Maven Repository Switchboard        
     default        
     http://repo1.maven.org/maven2        
            
       false        
            
          
 

  3)远程仓库:

    在pom.xml中配置repositories节点

   
      
         companyname.lib1
         http://download.companyname.org/maven2/lib1
      
      
         companyname.lib2
         http://download.companyname.org/maven2/lib2
      
   

  依赖搜索顺序:先查本地服务没有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节点执行插件用途


   
   org.apache.maven.plugins
   maven-antrun-plugin
   1.1
   
      
         id.clean
         clean
         
            run
         
         
            
               clean phase
            
         
           
   
   

11.代码创建工程:

  C:\MVN>mvn archetype:generate -DgroupId=com.companyname.bank -DartifactId=consumerBanking -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

12.外部依赖在pom.xml中配置dependencies节点

       
          
             junit
             junit
             3.8.1
             test
          

          
             ldapjdk
             ldapjdk
             system
             1.0
             ${basedir}\src\lib\ldapjdk.jar
          
       

  其中scope:指定作用域;systemPath:jar包下载到指定路径

13.创建工程文档;工程模板

  命令行:C:\MVN>mvn site;mvn archetype:generate

14.快照:服务端的jar包老是更新最新版本,用它的pom.xml就需要不断地更新配置很麻烦就出现了快照

  1)过程:提供jar包的服务端配置jar包时配置的版本名字加上-SNAPSHOT:如<version>1.0-SNAPSHOTversion>

"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">
  4.0.0
  data-service
  data-service
  1.0-SNAPSHOT
  jar
  health
  http://maven.apache.org
  
     UTF-8
  
  

        使用这个jar包快照pom.xml中配置:  

  
     
     data-service
         data-service
         1.0-SNAPSHOT
         test
     
  

  2)命令行:强制获得最新快照:mvn clean package -U

15.构建自动化

  一旦一个工程创建成功,其相关依赖工程也要开始重新构建工程从而保证其依赖项的稳定性

  场景:一个 bus-core-api更新后,希望app-web-ui,app-desktop-ui两个从线也自动更新

app-web-ui 
"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">
   4.0.0
   app-web-ui
   app-web-ui
   1.0
   jar
   
      
      bus-core-api
         bus-core-api
         1.0-SNAPSHOT
      
   


app-desktop-ui 
"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">
   4.0.0
   app-web-ui
   app-web-ui
   1.0
   jar
   
      
      bus-core-api
         bus-core-api
         1.0-SNAPSHOT
      
   


bus-core-api
"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">
   4.0.0
   bus-core-api
   bus-core-api
   1.0-SNAPSHOT
   jar   

    1)在三个线中配置快照-》2)

  • 在 bus-core-api 的 pom 文件里添加一个编译目标来提醒 app-web-ui 工程和 app-desktop-ui 工程启动创建。->C:\MVN\bus-core-api>mvn clean package -U
  • "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">
       4.0.0
       bus-core-api
       bus-core-api
       1.0-SNAPSHOT
       jar
       
       
       
       maven-invoker-plugin
       1.6
          
             true
             
                app-web-ui/pom.xml
                app-desktop-ui/pom.xml 
             
          
          
             
                build
                
                   run
                
             
          
       
       
       
    

16.依赖管理:没啥说的看看就是maven对多个pom之间的依赖关系

17.自动化部署:只用pom.xml配置就能全部被自动部署

  使用Maven发布的插件

"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">
   4.0.0
   bus-core-api
   bus-core-api
   1.0-SNAPSHOT
   jar 
   
      http://www.svn.com
      scm:svn:http://localhost:8080/svn/jrepo/trunk/
      Framework
      scm:svn:${username}/${password}@localhost:8080:
      common_core_api:1101:code
   
   
      
         Core-API-Java-Release
         Release repository
         http://localhost:8081/nexus/content/repositories/
         Core-Api-Release
      
   
   
      
         
            org.apache.maven.plugins
            maven-release-plugin
            2.0-beta-9
            
               false
               deploy
               [bus-core-api-release-checkin]-<
               /scmCommentPrefix>
            
         
      
   
元素    描述
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