一、maven常用的命令:
mvn clean install -Dmaven.test.skip=true -rf :spring-boot-cli
mvn clean install -Dmaven.test.skip=true -Dcheckstyle.skip=true
mvn help:describe -Dplugin=插件名称 -Ddetail 例如:“mvn help:describe -Dplugin=jar -Ddetail” 展示的就是maven-jar-plugin插件的使用详情
mvn dependency:tree
mvn help:effective-pom
mvn package -X 大写的X用于调试
二、org.codehaus.gmaven:gmaven-plugin插件的使用,这插件主要是关于groovy的:
三、maven-compiler-plugin
java编译插件:
参数详解:
configuration-->source 指定要被编译的java源文件的版本
configuration-->target 指定将要编译出来的java的class文件的版本
configuration-->skip 当这个值为true时,不编译测试代码
configuration-->compilerArgs-->compilerArg -verbose 输出编译器正在执行的操作的信息
-Xlint:unchecked 启用未经检查或不安全操作的警告@SuppressWarning
-Xlink:deprecation 启用使用已过时的类或方法的警告@SuppressWarning
-bootclasspath ${env.JAVA_HOME}/jre/lib/rt.jar指定编译源文件时所用的引导类
-extdirs ${env.JAVA_HOME}/jre/lib/ext 指定编译源文件时所用的扩展类
当然为什么要指定-bootclasspath和-extdirs呢,最主要原因就是交叉编译:
javac本身就是java应用程序,所以需要引导类和扩展类
目标程序也是java应用程序,所以也需要引导类和扩展类
默认情况下目标程序需要的引导类和扩展类就是javac的引导类和扩展类,但是如果目标程序需要的引导类和扩展类和javac的不一样时,
目标程序的引导类的扩展类就需要用bootclasspath和extdirs指定
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.7</source> <target>1.7</target> <encoding>UTF-8</encoding> <compilerArgs> <arg>-verbose</arg> <arg>-Xlint:unchecked</arg> <arg>-Xlint:deprecation</arg> <arg>-bootclasspath</arg> <arg>${env.JAVA_HOME}/jre/lib/rt.jar</arg> </compilerArgs> </configuration> </plugin>
四、spring源码编译
编译kotlin
<plugin> <artifactId>kotlin-maven-plugin</artifactId> <groupId>org.jetbrains.kotlin</groupId> <version>1.3.0</version> <configuration> <jvmTarget>1.8</jvmTarget> </configuration> <executions> <execution> <id>compile</id> <phase>compile</phase> <goals> <goal>compile</goal> </goals> <configuration> <sourceDirs> <sourceDir>${project.basedir}/src/main/kotlin</sourceDir> </sourceDirs> </configuration> </execution> </executions> </plugin>
aspectj编译
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>aspectj-maven-plugin</artifactId> <version>1.8</version> <executions> <execution> <configuration> <complianceLevel>1.8</complianceLevel> <target>1.8</target> <source>1.8</source> </configuration> <goals> <goal>compile</goal> </goals> <phase>process-resources</phase> </execution> </executions> <dependencies> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>1.9.5</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjtools</artifactId> <version>1.9.5</version> </dependency> </dependencies> </plugin>
groovy与java混合编译
<plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <compilerId>groovy-eclipse-compiler</compilerId> </configuration> <dependencies> <dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-eclipse-compiler</artifactId> <version>2.9.2-01</version> </dependency> <dependency> <groupId>org.codehaus.plexus</groupId> <artifactId>plexus-compiler-api</artifactId> <version>2.8.1</version> </dependency> <dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-eclipse-batch</artifactId> <version>2.4.3-01</version> </dependency> </dependencies> </plugin>
编译spring-context-indexer的工程项目
<plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <compilerArgument>-proc:none</compilerArgument> </configuration> </plugin>