• 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:javaapache-maven-3.2.5(maven文件根路径)

        Path:添加%MAVEN_HOME%/bin

      2)配置文件:config/setting.xml

        1)修改更新到本地资源库:  <localRepository>C:javaapache-maven-3.2.5 epository</localRepository>

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

        之后项目中需要的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
    View Code

    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>
    View Code

      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>
    View Code

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

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

    <profile>
       <id>test</id>
       <activation>
          <property>
             <name>env</name>
             <value>test</value>
          </property>
       </activation>
    </profile>
    View Code

        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>
    View Code

      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> 
    View Code

      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>
    View Code

      依赖搜索顺序:先查本地服务没有jar包时-》中央仓库没有jar包时-》远程仓库没有jar包时-》报错 

    10.插件plugins

      Maven实际上就是依赖插件执行的框架;通常被用来

    创建 jar 文件
    创建 war 文件
    编译代码文件
    代码单元测试
    创建工程文档
    创建工程报告
    View Code

      语法: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 任务的集合。        
    View Code

      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>
    View Code

    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.1</version>
                 <scope>test</scope>
              </dependency>
    
              <dependency>
                 <groupId>ldapjdk</groupId>
                 <artifactId>ldapjdk</artifactId>
                 <scope>system</scope>
                 <version>1.0</version>
                 <systemPath>${basedir}srclibldapjdk.jar</systemPath>
              </dependency>
           </dependencies>
    View Code

      其中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.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-8</project.build.sourceEncoding>
      </properties>
      </project>
    View Code

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

      <dependencies>
         <dependency>
         <groupId>data-service</groupId>
             <artifactId>data-service</artifactId>
             <version>1.0-SNAPSHOT</version>
             <scope>test</scope>
         </dependency>
      </dependencies>
    View Code

      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.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.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.0</modelVersion>
       <groupId>bus-core-api</groupId>
       <artifactId>bus-core-api</artifactId>
       <version>1.0-SNAPSHOT</version>
       <packaging>jar</packaging>   
    </project>
    View Code

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

    • 在 bus-core-api 的 pom 文件里添加一个编译目标来提醒 app-web-ui 工程和 app-desktop-ui 工程启动创建。->C:MVNus-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.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>
      View Code

    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.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:8080:
          common_core_api:1101: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-9</version>
                <configuration>
                   <useReleaseProfile>false</useReleaseProfile>
                   <goals>deploy</goals>
                   <scmCommentPrefix>[bus-core-api-release-checkin]-<
                   /scmCommentPrefix>
                </configuration>
             </plugin>
          </plugins>
       </build>
    </project>
    View Code
    元素    描述
    SCM    配置 SVN 的路径,Maven 将从该路径下将代码取下来。
    repository 成功构建出来的 WAR
    /EAR/JAR 或者其他的构建结果存放的路径。 plugins maven-release-plugin 用以自动化部署的过程。

    18.Apache Maven Elipse IDEApache Maven NetBeansApache 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

  • 相关阅读:
    .NET Tools...
    函数重载
    友元课后题
    怎么防止用户输入错误信息
    C#动态求圆的面积
    重载自增
    C++数学应用
    位运算符
    MSDN放出了VS2010简体中文正式版(附下载地址)
    字符串复制
  • 原文地址:https://www.cnblogs.com/xiaoping1993/p/7027315.html
Copyright © 2020-2023  润新知