通过maven自定义archetype快速开发的步骤【http://marshal.easymorse.com/archives/1212】

每次创建开发环境对个人和团队都是一个负担。影响开发效率,增加出差错的可能性。maven的自定义archetype和相关设置可以瞬间创建预配 置的项目。现在一般将这种预配置的项目叫做:脚手架(scaffold)。开发人员将主要精力放在业务的开发,而不是搭建基础的项目结构。

 

可以手工创建archetype,但是需要注意的东西比较多,比如编写配置文件,必须一一描述文件的复制路径,而且可能用到 velocity和相关宏的使用。所以一般可先创建所需的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,复制文件可能出现乱码。

posted @ 2012-02-01 15:17  琥珀光  阅读(393)  评论(0编辑  收藏  举报