1、私服配置
1)连接私服的认证信息。在C:Usersleovo.m2settings.xml中配置私服的访问用户名和密码
<id>archivaServer</id>
<username>admin</username>
<password>admin123</password>
注:
a)id 是要认证的服务器名称(可随便取一个),可以配置多个。它是用来标记服务器的,要唯一
b)username和password是用户名和密码。这里直接在初始化 Archiva 服务器的时候,创建了 admin 用户名和密码
c)如果要连接多个私服,可以类似地配置多个server,每个server是一个私服的认证信息
2)私服镜像配置
<mirror> <id>archivaServer</id> <mirrorOf>*</mirrorOf> <name>MyownRepo2</name> <url>http://localhost:8080/repository/internal</url> </mirror>
注:
a)id 是私服映射的标记,该标记要同 server 中的 id 一样。如果连接私服需要认证信息,Maven 可以通过 id 找对应的 server,用 server 的认证信息进行认证。
b)mirrorOf 指定哪些内容需要通过私服下载,* 表示所有构件都需要从私服下载。
c)name 是私服的名称,随意取,方便自己记忆和理解就好。
d)url 指定私服的 Url,注意格式: http://<私服ip/名称>:<web端口>/reposotory/<仓库 id>
2、发布配置(在pom.xml中配置)
<distributionManagement> <repository> <id>archivaServer</id> <url>http://localhost:8080/repository/internal</url> </repository> <snapshotRepository> <id>archivaServer</id> <url>http://localhost:8080/repository/snapshots</url> </snapshotRepository> </distributionManagement>
注:
1、上面的信息配置了两个仓库url,一个是repository;另一个是快照repository。每个repository中都有一个 url。
2、其中 url 就是要发布的私服仓库url,与在 settings.xml 中配置 mirror 中的 url 一样。同样,有两个 Id。
3、需要注意,要与在 settings.xml 中用 server 配置的验证信息中的 Id 对应。因为发布就是上传文件,上传文件前需要安全认证。Maven 是通过 Id 将 server 中的验证信息发送给私服,私服认证通过了,才允许用户将本地构件上传。
4、前面已经将配置信息都配置好了,右击“工程”,选择 Run As→Maven build… 命令,在弹出框的 Goal 后面输入 deploy,单击 Run 按钮,它们就会自动发布到私服。
3、术语解析
1)快照版本:临时版本,即使版本号不变,每次依赖也都会获取最新的包
2)发布版本:发布后就固定了,版本号不变的情况下,不会获取最新的包
3)版本号
<主版本>.<次版本>.<增量版本>-<里程碑版本>
1、主版本:表示项目重大架构的变更。比如 Struts1 和 Struts2,它们的架构体系都不同;JUnit4 和 JUnit3,一个全面支持注解,另一个就不支持。
2、次版本:表示有较大的功能增加和变化,或者全面系统地修复漏洞。
3、增量版本:表示有重大漏洞的修复。
4、里程碑版本:表明一个版本的里程碑(版本内部)。这样的版本同下一个正式版本相比,相对来说不是很稳定,有待更多的测试。
4、依赖的范围。参考 http://c.biancheng.net/view/5005.html
compile:(默认)编译、测试、运行时有效 test:只对测试时有效,编译、运行时无效。如junit provided:编译和测试时有效,运行时无效。如servlet-api runtime:测试和运行时有效,编译时无效。如 JDBC 驱动实现类 system:同 provided 一样,但必须通过 systemPath 元素指定依赖文件的路径 import:它的作用是将其他模块定义好的 dependencyManagement 导入当前 Maven 项目 pom 的 dependencyManagement 中
5、依赖的传递性
Maven 会解析项目中的每个直接依赖的 pom,将那些必要的间接依赖以传递依赖的形式引入项目中
6、Maven多模块版本规范
1、同一项目中所有模块版本保持一致 2、子模块统一继承父模块的版本 3、统一在顶层模块Pom的<dependencyManagement/>节中定义所有子模块的依赖版本号,子模块中添加依赖时不要添加版本号 4、开发测试阶段使用SNAPSHOT 5、生产发布使用RELEASE 6、新版本迭代只修改顶层POM中的版本
7、聚合与继承
聚合与继承是两码事,但聚合通常伴随这继承。聚合是通过在父pom中编写<module>来实现,如:
<modules> <module>my-project</module> <module>another-project</module> </modules>
继承是在子pom中编写<parent>来实现的,如:
<parent> <groupId>org.codehaus.mojo</groupId> <artifactId>my-parent</artifactId> <version>2.0</version> <relativePath>../my-parent</relativePath> </parent>
其中relativePath
元素不是必须的,指定后会优先从指定的位置查找父pom。
继承是 Maven 中很强大的一种功能,继承可以使得子POM可以获得 parent 中的各项配置,可以对子pom进行统一的配置和依赖管理。父POM中的大多数元素都能被子POM继承。除了以下几个:artifactId、name、prerequisites。
以下元素都可以被继承:
groupId、version、description、url、inceptionYear、organization、licenses、developers、contributors、mailingLists、scm、issueManagement、ciManagement、properties、dependencyManagement、dependencies、repositories、pluginRepositories、build 、reporting、profiles
8、多模块打包