Maven中的构件(artifact)都是以库(repositories)的方式组织的。事实上,库就是符合Maven的库目录结构的构件的集合。
而库又分为本地库和远程库。
通常,本地库位于$user_host/.m2/repository目录下。
而远程库则往往根据需要有多个,默认的是Maven项目本身提供的Maven库,其对应的服务器url如下:
<url>https://repo.maven.apache.org/maven2/</url>
远程库可能还包含各个企业或组织提供的远程库,如原Codehaus库,现在已经被如下库替代:
<url>https://repository-master.mulesoft.org/nexus/content/groups/public/</url>
远程库通常在POM中定义,但是远程库所在的服务器信息,如访问用户名、密码等,往往因为不适合与POM一起发布,所以需要在settings.xml文件中设置。
在settings.xml文件中设置远程库所在的服务器信息示例如下:
<servers>
<server>
<id>server001</id>
<username>my_login</username>
<password>my_password</password>
<filePermissions>664</filePermissions>
<directoryPermissions>775</directoryPermissions>
<configuration></configuration>
</server>
<server>
<id>server002</id>
<privateKey>${user.home}/.ssh/id_dsa</privateKey>
<passphrase>some_passphrase</passphrase>
<filePermissions>664</filePermissions>
<directoryPermissions>775</directoryPermissions>
<configuration></configuration>
</server>
</servers>
在上述示例中,对于一个server,其:
id,服务器的ID,Maven在连接一个库或者镜像的时候,通过id匹配要连接的服务器;
username, password,连接服务器所需的认证信息;
privateKey, passphrase,连接服务器所需的认证信息。privateKey默认位于${user.home}/.ssh/id_dsa;
filePermissions, directoryPermissions,库中的文件访问权限和目录访问权限。该值的格式采用3位数字,兼容UNIX/Linux下格式;
configuration,访问服务器辅助要传递的参数,通常不必要;