該篇文章適合maven 有點基礎的童鞋,pom文件裏面配置比較多,記錄下來運用起來纔是本身的。這是個人筆記,不喜勿噴java
<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的某些jar包版本(父項目不是真的引用,只是聲明版本),而後在子項目中引入依賴時不須要指定版本(子項目中須要引入依賴)。 ==爲了統一項目使用的jar的版本==。spring
dependencyManagement裏只是聲明依賴,並不實現引入,所以子項目須要顯示的聲明須要用的依賴。若是不在子項目中聲明依賴,是不會從父項目中繼承下來的;只有在子項目中寫了該依賴項,而且沒有指定具體版本,纔會從父項目中繼承該項,而且version和scope都讀取自父pom;另外若是子項目中指定了版本號,那麼會使用子項目中指定的jar版本。apache
<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> 複製代碼
<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>
複製代碼
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 不成功,本身查找緣由。