精华内容
下载资源
问答
  • maven archetype 自定义

    千次阅读 2018-06-06 17:54:06
    archetype是什么 如何创建archetype(简易版,标准版请看后面#更多...archetype是maven的工程原型(模版),也就是说,使用archetype,可以将maven中已存在的工程结构和配置套用到新创建的工程上。 一般用idea创建mav...

    archetype是什么

    archetype是maven的工程原型(模版),也就是说,使用archetype,可以将maven中已存在的工程结构和配置套用到新创建的工程上。
    一般用idea创建maven工程的时候,大家也都是这样做的。

    但是可能我们会觉得,idea提供的原型,太简单了,配置还是太少,这个时候我们就可以自己创建archetype,然后加到maven中,供自己和其他人使用

    如何创建archetype(简易版,标准版请看后面#更多问题)

    第一步

    首先,是要创建供其他工程使用的模版工程,比如SSM的框架,包的结构等

    第二步

    然后,将该模版工程创建成archetype,这里要用到mvn的命令,在项目根目录下运行:

    mvn archetype:create-from-project

    maven会打包工程,生成target文件夹和对应的包
    这里需要注意的问题是,在idea中,可能需要删除idea生成的.idea文件夹和*.iml文件,以防止利用工程原型创建工程和原型之间冲突

    第三步

    最后,进入到target\generated-sources\archetype文件夹下,通过命令mvn install将工程原型安装到本地,或者通过mvn deploy将工程原型发布。

    如何使用archetype

    如果是在idea增加的话,可以在创建新工程的时候选择add archetype加入,需要注意的是,其中Artfactid是自己创建的工程原型+-archetype
    如果是使用maven命令行,则可以通过mvn archetype:generate 按提示选择

    更多问题

    上面其实是个个人适用简易版的创建方法,标准一点的,需要考虑如下问题:
    1. 项目层级结构中空包的问题:maven默认不会将空包打包
    2. archetype的配置文件:官方一点,一定有一个描述和配置的文件
    3. 各级包名的命名问题:你一定不会像让所有工程都和工程原型一样的包名

    对于第一个问题,需要做的是修改maven插件配置:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.3</version>
        <configuration>
        <!-- 增加这一句 -->
        <includeEmptyDirs>true</includeEmptyDirs>
        </configuration>
    </plugin>

    第二个问题,当我们通过mvn archetype命令生成工程原型的时候,maven会帮我们创建一个原型的说明文件,在target\generated-sources\archetype\target\classes\META-INF\maven目录下,不过可能我们想自己修改

    对于第三个问题,比较复杂,涉及一点原理,maven archetype其实是在新工程创建完成后,在新工程内,再创建工程原型里有的各种文件的,所以如果重命名报名,就需要通过占位符在包名上占位留空,对应的,类的package 也需要占位符。
    这里的占位符其实是指maven的变量,其中groupId、artifactId都是maven工程的变量,原则上包名,类里的package直接拿来用就成。但是groupId默认是.分割的,而包是文件夹,是通过\分割的,所以直接用groupId还不行,查一查,搜一搜,我们发现,有packageInPathFormat变量,是文件路径格式的groupId,可以用。

    为了配置报名,类的package自适应,我们需要重新设计包名,并需要在生成好的archetype原型内修改代码,有两部分需要修改:
    * 关于包名:为了让maven明白包名是占位符,我们需要使用特殊的命名方式,两个下划线__,作为包名开头和结尾。也就是说,如果包名设计是org.liqiang.mvntest,其中org.liqiang是groupId,mvntest是artifactId,那么我们设计工程原型的包名就是__packageInPathFormat__.__artifactId__
    * 关于类内的package等和包名关联的信息:类内的信息,在maven生成的时候,都可以通过占位符自动替换,引用maven变量的格式是${package},${groupId},${artifactId}等。但是因为转义的原因,生成archetype的时候并不能设置这些,需要等生成了archetype之后,去源文件内修改。需要去每一个类文件里将对应的包名替换掉。

    未解决的问题

    我试了好多次,包名命名成groupId.artifactId的操作(就是archetype工程写成__packageInPathFormat__.__artifactId__),但是我失败了,基于原型出来的工程,只有groupId没有artifactId,百思不解。附一些网址,说不定对这个问题有帮助:
    Package names in project generated from Maven archetype
    How is metadata about an archetype stored?

    参考来源

    1. 使用maven3 创建自定义的archetype
    2. Maven 自定义 archetype
    3. http://leobluewing.iteye.com/blog/1997236
    展开全文
  • Maven 自定义模版

    2012-10-20 16:51:31
    创建自己的archetype一般有两种方式,比较简单的就是create from project1、首先使用eclipse创建一个新的maven project,然后把配置好的一些公用的东西放到相应的目录下面 比如说会将一些常用的java代码存放到src/...

    创建自己的archetype一般有两种方式,比较简单的就是create from project

    1、首先使用eclipse创建一个新的maven project,然后把配置好的一些公用的东西放到相应的目录下面
        比如说会将一些常用的java代码存放到src/main/java目录下面;
        会将一些通用的配置文件放到src/main/resources目录下面;

        如果是javeEE工程,还会有一些jsp等等的文件存放到src/main/webapp目录下面

     

    2、然后在maven project的pom.xml文件中添加插件
        ================================================
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-archetype-plugin</artifactId>
                <version>2.2</version>
            </plugin>
        </plugins>
        ================================================

    例如:




    3、打开cmd窗口,cd到刚才创建的maven project的根目录,运行maven命令:
        mvn archetype:create-from-project
        然后会在target目录下面生成generated-sources目录,这个就是生成的 archetype

    4、cd进入generated-sourced/archetype目录,运行maven命令:
        mvn install
        这样就把自定义的archetype安装到本地仓库了。
        archetype安装的地址是在maven安装目录下面的conf/settings.xml文件中指定的(<localRepository>字节)。
        默认会在  ~/.m2  目录下面生成一个archetype-catalog.xml文件(和默认的settings.xml在同一个目录),
        声明了该archetype的groupId、artifactId和其他属性。
        因为Eclipse创建maven项目过程中,选择的“Default Local”指向的地址就是 ~/.m2,
        所以文件archetype-catalog.xml会被eclipse自动读取,
        使用eclipse创建maven项目的时候可以在"Default Local"一项中找到刚才自定义archetype名字。
        
    5、当eclipse的maven设置中,User Settings选择的settings.xml指向的本地仓库地址和maven安装目录下
        的那个settings.xml中指向路径一样的时候,eclipse才能读取得到刚才安装的自定义的archetype的源文件,
        这样eclipse才能复制源文件并创建项目。

    6、如果想要卸载刚才安装的archetype,只需要将~/.m2目录下面的archetype-catalog.xml文件中对应的<archetype>字节段删掉,
        并且把本地仓库中相应groupId和artifactId下面的文件删掉就可以了。

    7、安装到本地仓库中的archetype只可以被自己使用,如果想要共享,那么在第四步的时候使用deploy命令,不要使用install命令。
    =====================================================================================
    =====================================================================================



    展开全文
  • [Maven]自定义Archetypes

    2019-10-04 13:17:06
    Archetypes就相当于脚手架,如果在平常项目中,有个基础的模版,你就可以直接基于模版构建项目, 1. 新建一个maven项目,定义项目pom.xml <project xmlns=...

    Archetypes就相当于脚手架,如果在平常项目中,有个基础的模版,你就可以直接基于模版构建项目,

    1. 新建一个maven项目,定义项目pom.xml

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.ppdai.cbd.ddp</groupId>
        <artifactId>flinkCustomArchitype</artifactId>
        <version>1.0-SNAPSHOT</version>
        <packaging>maven-archetype</packaging>
    
        <build>
            <extensions>
                <extension>
                    <groupId>org.apache.maven.archetype</groupId>
                    <artifactId>archetype-packaging</artifactId>
                    <version>3.1.1</version>
                </extension>
            </extensions>
        </build>
    </project>

    2.创建 archetype描述文件,文件所在目录  (项目根目录)flinkCustomArchitype/src/main/resources/META-INF/maven

    <archetype-descriptor
            xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0
            http://maven.apache.org/xsd/archetype-descriptor-1.0.0.xsd"
            xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            name="flinkCustomArchitype">
        <fileSets>
            <fileSet filtered="true" packaged="true">
                <directory>src/main/java</directory>
            </fileSet>
        </fileSets>
    </archetype-descriptor>

    3. 目录结构 

    archetype
    |-- pom.xml
    `-- src
        `-- main
            `-- resources
                |-- META-INF
                |   `-- maven
                |       `--archetype-metadata.xml
                `-- archetype-resources
                    |-- pom.xml  (prototype pom.xml
                    `-- src
                        |-- main
                        |   `-- java
                        |       `-- App.java
                        `-- test
                            `-- java
                                `-- AppTest.java

    4. 创建 prototype pom.xml

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
     
        <groupId>${groupId}</groupId>
        <artifactId>${artifactId}</artifactId>
        <version>${version}</version>
        <packaging>jar</packaging>
     
        <name>${artifactId}</name>
        <url>http://www.myorganization.org</url>
     
        <dependencies>
            <dependency>
                    <groupId>junit</groupId>
                    <artifactId>junit</artifactId>
                     <version>4.12</version>
                    <scope>test</scope>
            </dependency>
        </dependencies>
    </project>

    5. mvn install  本地安装

    6. cd 一个空目录,执行

    mvn archetype:generate                                  \
      -DarchetypeGroupId=<archetype-groupId>                \
      -DarchetypeArtifactId=<archetype-artifactId>          \
      -DarchetypeVersion=<archetype-version>                \
      -DgroupId=<my.groupid>                                \
      -DartifactId=<my-artifactId>

    完结。 又水了一篇文章

    转载于:https://www.cnblogs.com/zhengwangzw/p/11545359.html

    展开全文
  • Maven 自定义插件实战

    2020-09-24 16:46:10
    使用 IDEA,创建一个org.apache.maven.archetypes:maven-archetype-mojo模版项目,项目名叫demo-maven-plugin。注意,maven 插件的命名有讲究的,官方插件命名格式是maven-pluginName-plugin,非官方插件的命名格式...

    实战

    开发插件

    使用 IDEA,创建一个org.apache.maven.archetypes:maven-archetype-mojo模版项目,项目名叫demo-maven-plugin
    注意,maven 插件的命名有讲究的,官方插件命名格式是maven-pluginName-plugin,非官方插件的命名格式是pluginName-maven-plugin


    修改 pom.xml 。

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>org.example</groupId>
        <artifactId>demo-maven-plugin</artifactId>
        <!--打包方式 maven-plugin-->
        <packaging>maven-plugin</packaging>
        <version>1.0-SNAPSHOT</version>
        <name>demo Maven Mojo</name>
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
        </properties>
        <dependencies>
            <dependency>
                <groupId>org.apache.maven</groupId>
                <artifactId>maven-plugin-api</artifactId>
                <version>3.6.3</version>
            </dependency>
            <dependency>
                <groupId>org.apache.maven.plugin-tools</groupId>
                <artifactId>maven-plugin-annotations</artifactId>
                <version>3.6.0</version>
                <scope>provided</scope>
            </dependency>
        </dependencies>
        <build>
            <pluginManagement>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-plugin-plugin</artifactId>
                        <version>3.6.0</version>
                    </plugin>
                </plugins>
            </pluginManagement>
        </build>
    </project>
    
    

    注意依赖的版本,尽量保持一致。


    创建 Mojo。

    /**
     * 执行插件的动作名称,命令是 mvn XXX:xxx
     */
    @Mojo(name = "GetBlueBuff")
    public class JungleMojo extends AbstractMojo {
        /**
         * 设置一个配置参数,默认值是 defaultValue 
         */
        @Parameter(name = "name", defaultValue = "韩信")
        private String name;
    
        @Override
        public void execute() throws MojoExecutionException, MojoFailureException {
            getLog().info(name + "在拿蓝");
        }
    }
    


    将插件打包安装到本地仓库。

    $ mvn clean install
    

    使用插件

    创建另一个项目,引用我们创建的插件。

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <parent>
            <artifactId>maven-plugin</artifactId>
            <groupId>org.example</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
    
        <artifactId>sample</artifactId>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.example</groupId>
                    <artifactId>demo-maven-plugin</artifactId>
                    <version>1.0-SNAPSHOT</version>
                    <configuration>
                        <name>李白</name>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    
    </project>
    

    执行插件命令

    $ mvn demo:KillDarknessKing
    [INFO] Scanning for projects...
    [INFO] 
    [INFO] -------------------------< org.example:sample >-------------------------
    [INFO] Building sample 1.0-SNAPSHOT
    [INFO] --------------------------------[ jar ]---------------------------------
    [INFO] 
    [INFO] --- demo-maven-plugin:1.0-SNAPSHOT:GetBlueBuff (default-cli) @ sample ---
    [INFO] 李白在拿蓝
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  0.304 s
    [INFO] Finished at: 2020-09-23T16:11:44+08:00
    [INFO] ------------------------------------------------------------------------
    

    Mojo 模版

    import org.apache.maven.execution.MavenSession;
    import org.apache.maven.plugin.AbstractMojo;
    import org.apache.maven.plugin.MojoExecution;
    import org.apache.maven.plugin.descriptor.PluginDescriptor;
    import org.apache.maven.plugins.annotations.Component;
    import org.apache.maven.plugins.annotations.Execute;
    import org.apache.maven.plugins.annotations.InstantiationStrategy;
    import org.apache.maven.plugins.annotations.LifecyclePhase;
    import org.apache.maven.plugins.annotations.Mojo;
    import org.apache.maven.plugins.annotations.Parameter;
    import org.apache.maven.plugins.annotations.ResolutionScope;
    import org.apache.maven.project.MavenProject;
    import org.apache.maven.settings.Settings;
    
    // 此Mojo对应的目标的名称
    @Mojo( name = "<goal-name>",
          aggregator = <false|true>, 
          configurator = "<role hint>",
          // 执行策略
          executionStrategy = "<once-per-session|always>",
          inheritByDefault = <true|false>,
          // 实例化策略
          instantiationStrategy = InstantiationStrategy.<strategy>,
          // 如果用户没有在POM中明确设置此Mojo绑定到的phase,那么绑定一个MojoExecution到那个phase
          defaultPhase = LifecyclePhase.<phase>,
          requiresDependencyResolution = ResolutionScope.<scope>,
          requiresDependencyCollection = ResolutionScope.<scope>,
          // 提示此Mojo需要被直接调用(而非绑定到生命周期阶段)
          requiresDirectInvocation = <false|true>,
          // 提示此Mojo不能在离线模式下运行
          requiresOnline = <false|true>,
          // 提示此Mojo必须在一个Maven项目内运行
          requiresProject = <true|false>,
          // 提示此Mojo是否线程安全,线程安全的Mojo支持在并行构建中被并发的调用
          threadSafe = <false|true> ) // (since Maven 3.0)
    
    // 何时执行此Mojo
    @Execute( goal = "<goal-name>",           // 如果提供goal,则隔离执行此Mojo
             phase = LifecyclePhase.<phase>, // 在此生命周期阶段自动执行此Mojo
             lifecycle = "<lifecycle-id>" )  // 在此生命周期中执行此Mojo
    public class MyMojo
        extends AbstractMojo
    {
    
        @Parameter( name = "parameter",
                    // 在POM中可使用别名来配置参数
                    alias = "myAlias",
                    property = "a.property",
                    defaultValue = "an expression, possibly with ${variables}",
                    readonly = <false|true>,
                    required = <false|true> )
        private String parameter;
    
        @Component( role = MyComponentExtension.class,
                    hint = "..." )
        private MyComponent component;
    
    
        @Parameter( defaultValue = "${session}", readonly = true )
        private MavenSession session;
    
        @Parameter( defaultValue = "${project}", readonly = true )
        private MavenProject project;
    
        @Parameter( defaultValue = "${mojoExecution}", readonly = true )
        private MojoExecution mojo;
    
        @Parameter( defaultValue = "${plugin}", readonly = true )
        private PluginDescriptor plugin;
    
        @Parameter( defaultValue = "${settings}", readonly = true )
        private Settings settings;
    
        @Parameter( defaultValue = "${project.basedir}", readonly = true )
        private File basedir;
    
        @Parameter( defaultValue = "${project.build.directory}", readonly = true )
        private File target;
    
        public void execute()
        {
        }
    }
    
    
    展开全文
  • idea自定义maven archeType

    2020-07-27 17:01:16
    文章目录前言一、创建一个通用的项目模版二、生成archeType模版文件三、将模版项目安装到maven四、用创建好的archetype,创建Maven项目1、先添加自定义的archetype模版,2、添加完成后,可以看到archetype列表中多了...
  • 很多小公司都是靠做项目赚钱的,这个项目做完下个项目开始,并且通常会做比较类似的项目,这个时候我们在开发时后台工程比较相似,大部分代码都能复用,这个时候我们在idea中可以自定义maven骨架(一个通用模版),...
  • 代码生成器:Mybatis-plus代码生成自定义模版简述添加依赖复制maven包内的模版自定义模版内容为方便后续调用,封装了自定义模版的AutoGenerator调用运行结果 简述 AutoGenerator 是 MyBatis-Plus 的代码生成器,通过...
  • 系统地讲解了如何构建一个日常生产环境实用的基于Spring Boot并且集成springmvc + shiro + mybatis-plus + beetl的后台管理系统,可管理代码生成模版,管理连接生成代码的数据库. Guns框架自带的功能:1.用户管理 2....
  • archetype自定义骨架

    2020-06-12 14:55:20
    1新建一个maven项目随便起名模版尽量选择这个 2选择配置的settting文件 注意:一定要在.m2文件夹下面的settings文件,我之前自己定义的目录导致各种失败 3.随便加点自己想要的内容 4.配置pom文件 <...
  • 工程化-maven

    2018-06-16 00:06:54
    目录 1.认识maven 2.maven的优势 3.下载安装 ...12.自定义插件 13.profile使用 14.仓库nexus 15.archetype模版化 16.其他 1.认识maven 仓库消除重复的构建,模板化消除重复的编码,profil...
  • 重新认识项目构建工具Maven1. 认识Maven2. 优势3. 下载安装及配置4. 新建一个Maven项目5. 版本管理6. 常用命令7. 插件8. 自定义插件9.profile10.搭建自己的私服11. archetype 模版化 1. 认识Maven 网上对于maven的...
  • springside4自定义项目配置 从上一篇文章springside4环境搭建中可以看出,通过./generate-project.sh生成项目后,还需要手工改page的代码,如果想...这里springside4是使用了maven-archetype来作为模版引擎来生成代...
  • 调用摄像头拍照,自定义裁剪编辑头像 B 集成代码生成器 [正反双向](单表、主表、明细表、树形表,开发利器)+快速构建表单; 技术:313596790 freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面、...
  • 使用easypoi遇到的一个上传图片自定义图片地址的问题, 解决后就保留一下 您正在使用easypoi进行excel导入图片,并希望可以更改导入后的图片地址,希望这篇文章能帮到您。 本文主要是使用easypoi通过模版的形式导入...
  • A 调用摄像头拍照,自定义裁剪编辑头像 【新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统】 B 集成代码生成器 [正反双向](单表、主表、明细表、树形表,开发利器)+快速构建表单; 技术:...
  • A 调用摄像头拍照,自定义裁剪编辑头像 【新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统】 B 集成代码生成器 [正反双向](单表、主表、明细表、树形表,开发利器)+快速构建表单; 技术:...
  • 获取【下载地址】 QQ: 313596790A 调用摄像头拍照,自定义裁剪编辑头像 【新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统】B 集成代码生成器 [正反双向](单表、主表、明细表、树形表,开发利器)+...
  • 调用摄像头拍照,自定义裁剪编辑头像 【新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统】 B 集成代码生成器 [正反双向](单表、主表、明细表、树形表,开发利器)+快速构建表单; 技术:...
  • A调用摄像头拍照,自定义裁剪编辑头像【新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统】 B集成代码生成器 [正反双向](单表、主表、明细表、树形表,开发利器)+快速构建表单;技术:313596790 ...
  • A 调用摄像头拍照,自定义裁剪编辑头像 【新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统】 B 集成代码生成器 [正反双向](单表、主表、明细表、树形表,开发利器)+快速构建表单; 技术:...
  • 三大数据库 mysql oracle sqlsever 更专业、更强悍、适合不同用户群体 【新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统】 ...freemaker模版技术 ,0个代码不用写,生成完整的一个模块

空空如也

空空如也

1 2 3
收藏数 41
精华内容 16
关键字:

maven模版自定义