该篇文章适合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 不成功,本身查找缘由。