分享下本身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 不成功,本身查找缘由。

相关文章
相关标签/搜索