maven的插件
1.插件的简介
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.1.1</version> <executions> <execution> <id>bound-source</id> <phase>package</phase> <goals> <goal>jar-no-fork</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
Ps:上述为附带源码的插件
说明:<groupId>,<artifactId>,<version>含义同依赖类似,配置任务的id为attach-source(也可以不写),通过phase绑定在package上,执行目标goal是jar-no-fork,<phase>verify</phase>也可以不写,那么会绑定在package上。
2.maven的插件前缀
格式:groupid 的目标前缀:目标goal(相当于完整的写法:groupid:artifactid:version:goal)
说明:如果是maven的官方插件,那么可以省略groupid,会自动的默认的补全,例如maven的超级pom为maven为所有的核心插件设定了版本,所有项目都可以继承,所以用户不需要任何的配置,所以在使用核心插件的时候版本就已经确定了,假如用户的某个版本没有设定,而这个插件又不属于核心插件的范畴,maven就会去检查所有仓库中可用的版本,在maven遍历本地仓库和远程插件仓库之后,maven会解析为最新版的release版本。但是最好还是设定版本,避免潜在的不稳定性(maven3只能是release),建议加上版本。
Groupid:artifactid是一一对应的关系,根据目标前缀能找到相应的groupid以及artifactId,存储在仓库元数据中,maven在解析仓库元数据的时候会默认的将groupid解析为org.apche.maven.plugins和org/codehaus/mojo,具体可以查看org.apche.maven.plugins的仓库元数据如下http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-metadata.xml 当然也可以类上如上的方式在setting中设置的方式来添加相应的仓库元数据,配置如<pluginGroup>com.your.plugins</pluginGroup>(在</pluginGroups>添加),会搜寻在com/your/plugins/ maven-metadata.xml文件(写法如上),例如上述的mvn dependency:list
备注:eclipse的maven 使用build..中较dos中输入少了mvn,如在eclipse的maven 使用build..输入的是dependency:list
3.常用插件
1)指定jdk为1.8,utf为1.8
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.7.0</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin>
//也可以在setting中配置成全局的配置 <profile> <id>jdk-1.8</id> <activation> <activeByDefault>true</activeByDefault> <jdk>1.8</jdk> </activation> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion> </properties> </profile>
2)生成可执行的jar
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.1.0</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>hello.hello</mainClass> </transformer> </transformers> </configuration> </execution> </executions> </plugin>
备注:执行在dos窗口使用 java -jar jar包的绝对地址,也可以使用java -classpath jar包的绝对地址,在没有使用上述插件的前提下,也可以模仿MANIFEST.MF中添加例如Main-Class。
3)其他插件:http://maven.apache.org/plugins/index.html 有说明和实例