maven 仓库:
maven clean install install插件的instal目标是将目的构件输出文件安装至本地仓库
仓库信息可以直接配置在项目的pom配置文件中,认证信息需要配置在settings文件中
<repositories>
<repository>
<id>nexus</id>
<name>Team Nexus Repository</name>
<url>http://localhost:8081/nexus/content/groups/public</url>
</repository>
<repository>
<id>offical</id>
<name>Maven Official Repository</name>
<url>http://repo1.maven.org/maven2</url>
<snapshots>
<enabled>false</enabled>
<id>offical</id>
<name>Maven Official Repository</name>
<url>http://repo1.maven.org/maven2</url>
<snapshots>
<enabled>false</enabled>
<updatePolicy>daily</updatePolicy> 用来配置maven从远程仓库检查更新的频率
<checksumPolicy>ignore</checksumPolicy> 用来配置maven检查校验和文件的策略
</snapshots>
</repository>
</repository>
</repositories>
认证信息:
<settings>
<!-- ======================================================================== -->
<!-- Accounts for SCM ONLY -->
<!-- ======================================================================== -->
<servers>
<server>
<id>b2b.repo.server</id>
<username>maven</username>
<password>secret</password>
</server>
<server>
<id>scm.deploy.account</id>
<username>alifidev</username>
<password>alifidev</password>
</server>
</servers>
<localRepository>D:/repository</localRepository>
<!-- ======================================================================== -->
<!-- Accounts for SCM ONLY -->
<!-- ======================================================================== -->
<servers>
<server>
<id>b2b.repo.server</id>
<username>maven</username>
<password>secret</password>
</server>
<server>
<id>scm.deploy.account</id>
<username>alifidev</username>
<password>alifidev</password>
</server>
</servers>
<localRepository>D:/repository</localRepository>
</settings>
部署至远程仓库:
在项目pom中配置构建部署地址:
<distributionManagement>
<repository> 表示发布版本的构建仓库
<id>nexus-releases</id><name>Nexus
Release Repository</name><url>http://127.0.0.1:8080/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository> 表示快照版本的仓库
<id>nexus-snapshots</id><name>Nexus
Snapshot Repository</name><url>http://127.0.0.1:8080/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
使用mvn clean deploy 就会将项目部署至配置的远程仓库,当然往远程仓库部署构建需要认证,即需要在settings。xml文件中创建一个server元素。
为什么我们项目中配置版本一般使用快照版本?
因为如果是快照版本,在项目部署至私服上去的时候maven会自动为构建打上时间戳,有了最新的构是时间戳,maven就能随时找到仓库中最新的版本。
如果依赖版本是SNAPSHOT,则基于更新策略读取所有远程仓库的元数据groupId/artifactId/version/maven-metadata.xml,
将其与本地仓库的元数据合并后得到最新快照版本的值,然后基于该版本从本地仓库获取或者从远程仓库下载。
<metadata>
<groupId>com.alifi.aliloan.myth</groupId>
<artifactId>myth.biz</artifactId>
<version>3.5.0-SNAPSHOT</version>
<versioning>
<snapshot>
<timestamp>20120920.085641</timestamp> <时间戳>
<buildNumber>4</buildNumber> <构建号>
</snapshot>
<lastUpdated>20120920085648</lastUpdated>
</versioning>
</metadata>
根据这两个元素可以确定快照的最新构件为:myth.biz-3.5.0-20120920.085641-4.jar