分享下本身pom.xml maven配置筆記

該篇文章適合maven 有點基礎的童鞋,pom文件裏面配置比較多,記錄下來運用起來纔是本身的。這是個人筆記,不喜勿噴java

建立parent項目
<modelVersion>4.0.0</modelVersion>

    <groupId>com.xiaoyetan</groupId>  <!-- 項目組織惟一的標識符,實際對應JAVA的包的結構-->
    <artifactId>basis-parent</artifactId>
    <!--項目的惟一的標識符,實際對應項目的名稱,就是項目根目錄的名稱-->
    <packaging>pom</packaging>
    <!--項目的打包類型:pom、jar、war  -->
    <!--pom:父類型都爲pom類型-->
    <version>1.1.9</version>
    
    <parent>
        <!--經過parent指定父項目-->
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.19.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    
    <modules>
        <!--經過modules來指定該父項目下面的子模塊-->
        <module>eureka-server</module>
    </modules>

    <properties>
       <!--定義屬性變量,能夠在後面的標籤中使用-->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <spring-cloud.version>Edgware.SR5</spring-cloud.version>
    </properties>
    
    <dependencies>
         <!--指定項目所需的依賴的jar包-->
         <!--父項目若是直接引用的依賴,子項目能夠直接使用-->
        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-feign</artifactId>
        </dependency>
    </dependencies>
    
    <dependencyManagement>
        <!--經過它元素來管理jar包的版本,讓子項目中引用一個依賴而不用顯示的列出版本號。-->
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.xiaoyetan</groupId>
                <artifactId>basis-library</artifactId>
                <version>1.1.8</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
    <build>
        <!--編譯測試部署打包 額外配置-->
        <!--打包後的項目名-->
		<finalName>gateway-server</finalName>
		<!--構建結果所在路徑 默認爲${basedir}/target-->
		<directory>${basedir}/target</directory>
		<!-- 插件-->
		<plugins>
		    <plugin>
    			 <artifactId>maven-compiler-plugin</artifactId>
                 <configuration>
                        <!--maven-compiler-plugin所使用的包或者編譯時用的jdk-->
                        <source>${java.version}</source>
                        <target>${java.version}</target>
                        <encoding>${project.build.sourceEncoding}</encoding>
                  </configuration>
            </plugin>
			<plugin>
                <!--打包是跳過測試用例的-->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.20.1</version>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>
			
		</plugins>
	</build>
      
複製代碼
解析 dependencyManagement

其實就是經過在父項目的dependencyManagement的某些jar包版本(父項目不是真的引用,只是聲明版本),而後在子項目中引入依賴時不須要指定版本(子項目中須要引入依賴)。 ==爲了統一項目使用的jar的版本==。spring

dependencyManagement裏只是聲明依賴,並不實現引入,所以子項目須要顯示的聲明須要用的依賴。若是不在子項目中聲明依賴,是不會從父項目中繼承下來的;只有在子項目中寫了該依賴項,而且沒有指定具體版本,纔會從父項目中繼承該項,而且version和scope都讀取自父pom;另外若是子項目中指定了版本號,那麼會使用子項目中指定的jar版本。apache

解析build配置
<build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>
            
        </plugins>
    </build>
複製代碼
子項目 eureka-server pom.xml
<modelVersion>4.0.0</modelVersion>
<!--子模塊是不須要指定groupid的-->
<artifactId>eureka-server</artifactId>
<packaging>jar</packaging>
<version>1.0</version>

<name>eureka-server</name>
<description>服務註冊中心</description>

<parent>
    <!--指定父項目-->
    <groupId>com.xiaoyetan</groupId>
    <artifactId>basis-parent</artifactId>
    <version>1.1.9</version>
</parent>

<dependencies>
    <!--不指定依賴的jar版本,maven會去父項目找-->
    <dependency>
        <groupId>com.xiaoyetan</groupId>
        <artifactId>basis-library</artifactId>
    </dependency>
</dependencies>

 <build>
    <finalName>eureka-server</finalName>
    <plugins>
        <plugin>
            <!--可以將Spring Boot應用打包爲可執行的jar或war文件-->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <!-- 部署時是否跳過該項目 -->
            <artifactId>maven-deploy-plugin</artifactId>
            <configuration>
                <skip>true</skip>
            </configuration>
        </plugin>
    </plugins>
</build>
複製代碼
maven 命令----lifecycle

mvn cleanbash

清除target目錄下的以前打好的jar包或者是war包markdown

mvn compilemaven

編譯maven包spring-boot

在命令行輸入mvn compile後,maven就會自動幫咱們下載依賴jar,爲代碼生成字節碼文件等。咱們把這個過程稱爲 編譯測試

mvn testui

在命令行輸入 mvn test 項目會新增surefire-reports(測試報告) 、 test-classes(測試類字節碼)兩個文件夾。咱們把這個過程稱爲 測試。spa

mvn package

打包。 ==最後打包的格式根據pom文件中指定的==

mvn install

==把生成的jar/war包複製到本地repository==

mvn deploy

把生成的jar/war包發送到遠程repository,若是是父子模塊,哪些包是否upload是由項目pom中build-deploy配置來的(建議配置了私服,那就是往私服發送了)

其餘 命令行參數

跳過測試

mvn test -Dmaven.test.skip=true

mvn clean package

清理再打包

mvn clean install

清理打包後再把包複製到本地倉庫

mvn clean deploy

清理打包後再把包上傳到遠程私服,記住若是當前版本存在了是upload不成功的。 若是deploy 不成功,本身查找緣由。

相關文章
相關標籤/搜索