Maven中pom.xml标签

插件标签:plugin

插件:maven-compiler-plugin

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <configuration>
    <source>1.8</source>
    <target>1.8</target>
    <encoding>UTF-8</encoding>
  </configuration>
</plugin>

maven是个项目管理工具,maven-compiler-plugin的配置,就是用来告诉它我们的代码要使用什么样的jdk版本编译,如果不指定版本他就会使用默认的jdk版本来进行处理,maven的默认编译使用的jdk版本很低,这样就容易出现版本不匹配,以至于可能导致编译不通过的问题

下面展示关于maven-compiler-plugin的完整配置

<plugin>                                                                                                                                      
    <!-- 指定maven编译的jdk版本,如果不指定,maven3默认用jdk 1.5 maven2默认用jdk1.3 -->                                                                           
    <groupId>org.apache.maven.plugins</groupId>                                                                                               
    <artifactId>maven-compiler-plugin</artifactId>                                                                                            
    <version>3.1</version>                                                                                                                    
    <configuration>                                                                                                                           
        <!-- 一般而言,target与source是保持一致的,但是,有时候为了让程序能在其他版本的jdk中运行(对于低版本目标jdk,源代码中不能使用低版本jdk中不支持的语法),会存在target不同于source的情况 -->                    
        <source>1.8</source> <!-- 源代码使用的JDK版本 -->                                                                                             
        <target>1.8</target> <!-- 需要生成的目标class文件的编译版本 -->                                                                                     
        <encoding>UTF-8</encoding><!-- 字符集编码 -->
        <skipTests>true</skipTests><!-- 跳过测试 -->                                                                             
        <verbose>true</verbose>
        <showWarnings>true</showWarnings>                                                                                                               
        <fork>true</fork><!-- 要使compilerVersion标签生效,还需要将fork设为true,用于明确表示编译版本配置的可用 -->                                                        
        <executable><!-- path-to-javac --></executable><!-- 使用指定的javac命令,例如:<executable>${JAVA_1_4_HOME}/bin/javac</executable> -->           
        <compilerVersion>1.3</compilerVersion><!-- 指定插件将使用的编译器的版本 -->                                                                         
        <meminitial>128m</meminitial><!-- 编译器使用的初始内存 -->                                                                                      
        <maxmem>512m</maxmem><!-- 编译器使用的最大内存 -->                                                                                              
        <compilerArgument>-verbose -bootclasspath ${java.home}\lib\rt.jar</compilerArgument><!-- 这个选项用来传递编译器自身不包含但是却支持的参数选项 -->               
    </configuration>                                                                                                                          
</plugin>                                                                                                                                     

引自:https://blog.csdn.net/liupeifeng3514/article/details/80236077

在指定JDK版本的时候,其实也有很多种方式:
方式一:

<properties>
    <!-- maven-compiler-plugin 将会使用指定的 JDK 版本将 java 文件编译为 class 文件(针对编译运行环境) -->
    <maven.compiler.target>1.8</maven.compiler.target>
    <!-- maven-compiler-plugin 将会使用指定的 JDK 版本对源代码进行编译(针对编译运行环境) -->
	<maven.compiler.source>1.8</maven.compiler.source>
<properties>

方式二:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.0</version>
            <configuration>
                <!-- 同【方式一】的 maven.compiler.target -->
                <source>1.8</source>
                <!-- 同【方式一】的 maven.compiler.source -->
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

方式三:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.3.RELEASE</version>
</parent>
<properties>
    <java.version>1.8</java.version>
</properties>

方式三的有几个前提条件:

  1. 项目为一个 SpringBoot 工程
  2. 项目的 POM 继承了 spring-boot-starter-parent(其实spring-boot父标签已经帮你我们写好了,可以点进去看)

引自:https://blog.csdn.net/yangchao1125/article/details/100585116

插件:maven-source-plugin

<plugin>
  <artifactId>maven-source-plugin</artifactId>
  <configuration>
    <attach>true</attach>
  </configuration>
  <executions>
    <execution>
      <phase>package</phase>
      <goals>
        <goal>jar-no-fork</goal>
      </goals>
    </execution>
  </executions>
</plugin>

在很多情况下,需要对于Maven工程的源代码进行源文件的打包,可以利用maven-source-plugin插件来完成。利用Maven的Source插件,对Maven工程的源码进行打各种包。用户可以根据需要将任何插件目标绑定到任何生命周期的阶段,如:将maven-source-plugin的jar-no-fork目标绑定到default生命周期的package阶段,这样,以后在执行mvn package命令打包项目时,在package阶段之后会执行源代码打包。
execution下可配置phase属性, 意思是在什么阶段打包源文件。如install在执行mvn install时打包源代码

在这里插入图片描述
补充:
执行 mvn install,maven会自动将source install到repository 。
执行 mvn deploy,maven会自动将source deploy到remote-repository 。
执行 mvn source:jar,单独打包源码。
注意:在多项目构建中,将source-plugin置于顶层或parent的pom中并不会发挥作用,必须置于具体项目的pom中。

引自:https://www.cnblogs.com/yantz/p/4463374.html

标签:packaging

例如pom.xml的一段配置:

<groupId>com.alibaba.scrm</groupId>
<artifactId>scrm-server-share</artifactId>
<packaging>jar</packaging>
<version>1.0.0-SNAPSHOT</version>

pom:该方式主要是管理maven项目的,里面不放源码,用于继承或聚合的maven模块中
war:会将项目打成war包,对于web项目来说,通常会设置为war (如果需要把项目包放到tomcat来启动,就要使用这种)
jar:打成jar包,对于普通java项目来说,通常会设置为jar(比如springboot内置了tomcat,通过java命令就可以启动)

标签 dependency

<dependency>
	<groupId>com.alipay.sdk</groupId>
	<artifactId>alipay-sdk-java</artifactId>
	<version>4.9.100.ALL</version>
</dependency>

描述:我们要使用的jar包的gav信息放到这里,这样maven就可以自动下载相关jar包了。

标签 dependency-scope

<dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>servlet-api</artifactId>
	<version>2.5</version>
	<scope>provided</scope>
</dependency>

在dependency标签下有一个scope标签,该标签的作用是可以设置依赖在项目的使用阶段,通常来说,项目包含:编译、运行、测试、打包这些不同的阶段。

  • compile:是默认值,适用于所有阶段,编译、运行、测试、打包都会包含到项目中。
  • test:只在测试时使用,用于编译和运行测试代码,不会随项目发布,
    例如junit,如果不修改junit依赖中的scope,我们只能在test目录下使用junit相关类。
  • runtime:只在运行时使用,例如mysql的JDBC驱动依赖,我们在编写代码的时候使用java.sql包下的类即可,在运行的时候才会用到该依赖,适用运行和测试阶段。
  • provided:编译、运行阶段使用,打包时不会包含该依赖,例如servlet.jar,这个包在
    tomcat容器中已经提供了,因此打包时servlet.jar 无需包含在项目中。
  • system:类似provided,需要显式提供包含依赖的jar的路径(使用systemPath标签),Maven不会在仓库中查找它。使用较少

标签 dependency-systemPath

<dependency>
	<groupId>org.apache</groupId>
	<artifactId>log4j</artifactId>
	<version>1.2.17</version>
	<scope>system</scope>
	<systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/log4j-1.2.17.jar</systemPath>
</dependency>

引入非本地仓库中的jar包,有时候我们需要使用一些jar包,但是这些jar在maven仓库中并不存在,此时可以使使用下面方式引用,以log4j为例:

注意:如果这样引入非本地参考的jar包,在使用maven打包时是不会将该jar打包入项目中的,所以还需要添加下面内容:

<build>
  <resources>
    <resource>
      <directory>${project.basedir}/lib</directory>
      <targetPath>BOOT-INF/lib/</targetPath>
      <includes>
        <include>**/*.jar</include>
      </includes>
    </resource>
    <resource>
      <directory>src/main/resources</directory>
      <targetPath>BOOT-INF/classes/</targetPath>
    </resource>
  </resources>
</build>

标签 properties

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <jdk.version>1.8</jdk.version>
</properties>
......
  <source>${jdk.version}</source>

有时候对于同一个技术需要编写很多个依赖引入相关的jar包,每个依赖中都要填写版本号,倘若更换版本号的话,修改的地方比较多,所以可以使用properties统一管理版本号,logback-version可以自由命名,通过${}方式进行引用:

标签 build

Label	Description
sourceDirectory	Java文件目录
testSourceDirectory	测试Java文件目录
resources	资源文件目录
testResources	测试资源文件
outputDirectory	源文件输入出目录
testOutputDirectory	测试文件输出目录
finalName	指出最终打包的包名
defaultGoal	指定默认的参数,当执行maven命令时没有指定参数是使用默认参数,如compile、install
filters	使用配置文件中的值替换项目中的占位符

本文引自:http://www.monkey1024.com/javaweb/2168

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值