1、Maven内置变量说明:
- ${basedir} 项目根目录
- ${project.build.directory} 构建目录,缺省为target
- ${project.build.outputDirectory} 构建过程输出目录,缺省为target/classes
- ${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version}
- ${project.packaging} 打包类型,缺省为jar
- ${project.xxx} 当前pom文件的任意节点的内容
如果想上传(deploy)组件到远程仓库,需要配置两步:
(1)在项目的pom中配置distributionManagement节点,如下:
<project>
-
<distributionManagement>
-
<repository>
-
<id>acfunRepo</id>
-
<url>http://nexus.acfun.tv/nexus/content/repositories/AcFun-Release/</url>
-
</repository>
-
<snapshotRepository>
-
<id>acfunRepo</id>
-
<url>http://nexus.acfun.tv/nexus/content/repositories/AcFun-Snapshot/</url>
-
</snapshotRepository>
-
</distributionManagement> </project>
(2)在settings.xml文件中配置所上传到的仓库的用户名密码(server节点)
-
<servers>
-
<server>
-
<id>acfunRepo</id>
-
<username>acfun</username>
-
<password>acfun123</password>
-
</server>
-
</servers>
这里的远程仓库一般指的是中央仓库或者私服,是拉取组件用的仓库。二者都既能配置在settings.xml文件,也可以配置在项目的pom文件中。但是,如果配置中央仓库,则建议配置在settings文件中,方便大家共用;如果配置私服(nexus),则建议配置在项目的pom中,方便保持项目的灵活性。
下面则以私服(nexus)为例,展示分别在settings.xml中与pom中的配置方法:
3.1 在pom中配置(比较简单)
-
<project>
-
......
-
<repositories>
-
<repository>
-
<id>acfunnexus</id>
-
<url>http://nexus.acfun.tv/nexus/content/groups/public/</url>
-
<layout>default</layout>
-
<releases>
-
<enabled>true</enabled>
-
</releases>
-
<snapshots>
-
<enabled>true</enabled>
-
</snapshots>
-
</repository>
-
</repositories>
-
......
-
</project>
3.2 在settings.xml中配置(需要两步)
它不支持pom中的中的<repositories>及<pluginRepositories>元素,所以我们需要利用profile与activeProfile节点来完成,如下:
-
<settings>
-
...
-
<profiles>
-
<profile>
-
<id>dev</id>
-
<repositories>
-
<repository>
-
<id>maven-net-cn</id>
-
<name>MavenChinaMirror</name>
-
<url>http://repo2.maven.org/maven2/</url>
-
<releases>
-
<enabled>true</enabled>
-
</releases>
-
<snapshots>
-
<enabled>false</enabled>
-
</snapshots>
-
</repository>
-
</repositories>
-
<pluginRepositories>
-
<pluginRepository>
-
<id>maven-net-cn</id>
-
<name>MavenChinaMirror</name>
-
<url>http://repo2.maven.org/maven2/</url>
-
<releases>
-
<enabled>true</enabled>
-
</releases>
-
<snapshots>
-
<enabled>false</enabled>
-
</snapshots>
-
</pluginRepository>
-
</pluginRepositories>
-
-
</profile>
-
</profiles>
-
<activeProfiles>
-
<activeProfile>dev</activeProfile>
-
</activeProfiles>
-
...
-
</settings>