maven学习笔记

1.自定义archetype快速开发的步骤:

一般可先创建所需的maven项目,然后利用archetype plugin的create-from-project将maven项目将该maven项目生成为archetype类型项目。生成maven项目后并确定定型后,执行:

mvn archetype:create-from-project

 生成的archetype在此路径下:target\generated-sources

该目录下也会有pom.xml文件,可修改该文件,增加deploy的设置,比如公司有maven repository manager服务器,以后就可以将该archetype部署到公司服务器上,便于其他人使用。比如:

<distributionManagement>
    <repository>
        <id>releases</id>
        <name>MyCo Internal Repository</name>
        <url>http://dev.easymorse.com/nexus/content/repositories/releases</url>
    </repository>
    <snapshotRepository>
        <id>snapshots</id>
        <name>MyCo Internal Repository</name>
        <url>http://dev.easymorse.com/nexus/content/repositories/snapshots</url>
    </snapshotRepository>
</distributionManagement>

 部署到公司服务器的命令:mvn deploy

假设该archetype项目名为webproto-archetype,那么,其他开发者需要配置自己.m2/settings.xml文件,增加公司的repository信息,比如:

<profiles>
    <profile>
        <id>easymorse-profile</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <repositories>
            <repository>
                <id>easymorse-repo</id>
                <url>http://dev.easymorse.com/nexus/content/repositories/releases</url>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
                <releases>
                    <enabled>true</enabled>
                </releases>
            </repository>
        </repositories>
    </profile>

 然后使用该webproto-archetype,运行下面的示例,将在本地目录下获得一个struts2+hibernate集成的maven项目:

mvn archetype:generate
-DarchetypeGroupId=com.easymorse.dev
-DarchetypeArtifactId=webproto-archetype
-DarchetypeVersion=1.1.0

 create-from-project生成的项目一般不能直接使用,还需要手工修改。

比如,create-from-project会自动将xml文件的version的值(1.0)替代为变量占位符,可手工取消该变量,否则在使用该archetype时将被项目的版本值替代。

还有不要用archetype:create,已经标识为Deprecated了,通过它使用archetype,复制文件可能出现乱码。

 

 

 

2.自定义的archetype可以通过maven install安装到本地仓库里,路径与jar包类似.

 

 

 

3.多模块配置

<parent>
	<groupId>org.springside</groupId>
	<artifactId>springside3-parent</artifactId>
	<version>3.3.4</version>
</parent>

 可以实际上引用的路径为:{本地仓库}/org/springside/springside3-parent/3.3.4/springside3-parent-3.3.4.pom这个pom你文件。

 

 

4.顶层父pom中 dependencyManagement 中的 dependencies 与 子pom中的 dependencies 的区别

dependencyManagement 中的 dependencies只定义 依赖项版本的优先选择,并不影响项目的依赖项;而 dependencies 元素则影响项目的依赖项。

子pom:

<dependencies >
    <dependency >
      <groupId>com.devzuz.mvnbook.proficio</groupId>
       <artifactId>proficio-model</artifactId>
    </dependency >
  </dependencies > 

 这里并没有version值,这个时候,为使其模块 pom 完整,子pom就会到父pom的相应com.devzuz.mvnbook.proficio中找到version值,将版本信息注入其中。只有当 dependencies 元素中没有指明版本信息时, dependencyManagement 中的 dependencies 元素才起作用。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值