pluginGroups
当插件的组织id(groupId)没有显式提供时,供搜寻插件组织Id(groupId)的列表。
该元素包含一个pluginGroup元素列表,每个子元素包含了一个组织Id(groupId)。
<pluginGroups>
<!--
默认情况下,只有 org.apache.maven.plugins 和 org.codehaus.mojo 两个 groupId 的插件才支
持简化命令行调用,即可以运行 mvn help:system。
但是 mvn jetty:run 就不行了,因为 maven-help-plugin 的 groupId 是 org.apache.maven.plugins , 而 jetty-maven-plugin 的 groupId 是 org.eclipse.jetty。
为了能在命令行下直接运行 mvn jetty:run , 需要在 setting.xml 配置 pluginGroup
-->
<!--plugin的组织Id(groupId) -->
<pluginGroup>org.eclipse.jetty</pluginGroup>
</pluginGroups>
父POM
当项目构建时,Maven 会首先根据relativepath
检查父POM,如果找不到,再从本地仓库查找。relativePath
的默认值是../pom.xml
,也就是说Maven
默认父POM
在上一层目录。
打包可运行的jar
有时候,我们需要maven
打包出可以直接运行的jar
,可是默认生成的jar
是不能直接运行的。因为带有main
方法的类信息不会自动添加到manifest
中(打开jar
文件中的META-INF/MANIFEST.MF
文件,无法看到Main-Class
一行)。为了生成可执行的jar
文件,需要借助maven-shade-plugin
插件,该插件配置如下:
<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>com.pudding.xxx.helloworld.HelloWorld</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
现在执行mvn clean install
命令,在target
目录会生成了两个jar
文件,helloWorld-1.0-SNAPSHOT.jar
是带有Main-Class
信息可运行的jar
,original-helloWorld-1.0-SNAPSHOT.jar
是原始的jar
。
使用Archetype生成项目骨架
在Maven中,pom.xml
/java
主代码/测试代码的位置是约定好的,这些基本的目录结构和pom.xml
文件的内容被称为项目的骨架,Maven
提供了Archetype
来帮我们快速创建项目骨架。
# Maven3通过一下命令
mvn archetype:generate
然后选择需要使用的项目骨架编号,默认是maven-archetype-quickstart
,依次输入要创建项目的groupId
、artifactId
、version
以及包名package
。并确认。Archetyp
插件将根据输入的信息创建项目骨架。
PS:这个命令在我的控制台输出了 2685
个archetype
, maven-archetype-quickstart
序号是 1589
, /^笑哭
发布自己的jar到私服
配置settings.xml
<servers>
<server>
<id>releases</id>
<username>XX@XX.COM</username>
<password>XXX123</password>
</server>
<server>
<id>snapshots</id>
<username>XX@XX.COM</username>
<password>XXX123</password>
</server>
</servers>
修改项目的 pom.xml
distributionManagement
来指定Maven
分发构件的位置
<distributionManagement>
<repository>
<id>releases</id>
<name>Releases</name>
<url>http://localhost:3300/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>Snapshot</name>
<url>http://localhost:3300/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
settings.xml
中server
元素下id
的值必须与POM
中repository
或snapshotRepository
下id
的值一一对应。
镜像配置之mirrorOf
<mirrorOf></mirrorOf>
标签里面放置的是要被镜像的Repository ID
。mirrorOf
有如下三种配置
-
<mirrorOf>*</mirrorOf>
:拦截并代理所有远程仓库的请求。 -
<mirrorOf>repo1,repo2</mirrorOf>
拦截并代理仓库repo1
和repo2
,使用逗号分隔多个远程仓库。 -
<mirrorOf>*,!repo1</miiroOf>
:拦截并代理除repo1
外所有的远程仓库,感叹号表示将仓库从匹配中排除。