【问题标题】:Any good advanced guides on how to create new maven archetypes? [closed]关于如何创建新的 Maven 原型的任何好的高级指南? [关闭]
【发布时间】:2011-06-15 07:05:34
【问题描述】:

我正在寻找有关如何创建新的 maven 原型的指南,这些原型涉及使用参数来创建目录和文件名,其中参数用作文件名中的前缀以及由创建的包结构/目录的一部分原型。

我能找到的只是关于如何制作非常简单的项目的非常简单的说明。

【问题讨论】:

    标签: java maven archetypes


    【解决方案1】:

    来自 maven 文档:http://maven.apache.org/archetype/archetype-models/archetype-descriptor/archetype-descriptor.html

    文件集定义了位于 jar 文件中的项目文件被 Archetype 插件用于生成项目的方式。如果文件或目录名称包含 property 模式,则将其替换为相应的属性值。

    如果您可以将文件命名为

    __artifactId___local.properties

    ...当您使用 artifactId=foo 生成项目时,它将包含此文件:

    foo_local.properties

    【讨论】:

    • 警告 - 正则表达式太贪心,所以如果你有一个文件名 Blah___artifactId__ (中间有三个下划线),它会失败并显示一条愚蠢的消息,当你真正想要一个时说“找不到变量 _artifactId”前面的文字下划线。
    • 在这种情况下,您可以创建一个 Maven 属性 underscore = _ 并将文件命名为 Blah__underscore____artifactId_ –
    • 同意,但我确实尝试过,但没有成功 - 我现在选择更改命名约定以摆脱下划线。
    【解决方案2】:

    我认为我们遇到了同样的问题,最后我通过article的启发解决了它

    假设你要生成包com.company.base.dal.dao,我们称​​com.company.base为根包, dal.dao 是核心包,然后只需将模板java文件放在src/main/java/dal/dao下,并在META-INF/maven/archetype-metadata中调整packaged="true"。 xml如下

                <fileSet filtered="true" packaged="true" encoding="GBK"><!--packaged="true" tells maven to copy the core package in to root package while creating a project.-->
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.java</include>
                </includes>
            </fileSet>
    

    比如说,如果你在执行 mvn archetype:generate 后设置-Dpackage=com.alibaba.china,它会创建java源包为com/alibaba/china/dal/dao/sample.java

    如何在sample.java中给出前缀包信息,只需使用${package}如下

    package ${package}.dal.dao;
    

    原型插件将用 -Dpackage 替换 ${package} 作为速度模板

    【讨论】:

    • 谢谢,这对我有帮助,但我需要将编码更改为“UTF-8”。此外,链接已失效,因此您最好在答案中包含足够的信息。
    • O 是的,GBK是为了容纳汉字,UTF-8应该没问题
    【解决方案3】:

    【讨论】:

      【解决方案4】:

      即使我也在寻找同样的东西。 甚至我发现 Maven 主页非常基础,无法满足我们的要求。

      我什至试过HowToCreateMavenArchetypeFromProject 但我还有一个问题。生成该原型类型的项目时如何调用该原型的特定文件。具体来说,如果我有一个 java 类 App.java 如何在创建项目时调用它?

      create-archetype-from-project 发生的情况是它创建了一个具有相同文件和目录结构的项目,我们需要再次运行它以使其生效。

      此外,${groupId} 之类的东西只能在 maven 文件中使用。如果我有一个属性文件并想使用用户输入的 artifactId 怎么办?

      如果您遇到任何好东西,请告诉我。同时,当我找到任何解决方案时,我也会通知您。

      谢谢

      【讨论】:

        【解决方案5】:

        一旦我发现 Velocity 模板被用作原型流程的一部分,我想我找到了一个对我有更多帮助的网站。

        HowToCreateMavenArchetypeFromProject

        【讨论】:

          【解决方案6】:

          【讨论】:

          • 它只为我提供了基础知识。我什至会采用一个开源原型定义,我可以将其用作我想做的事情的模板。
          • 很抱歉,我误解了最后一部分“关于如何制作非常简单的项目的简单说明。”
          • 你想创建类似 appfuse 但使用 maven 然后 static.appfuse.org 的东西?
          • 该指南也已过时;您现在应该创建一个archetype-metadata.xml,否则您的集成测试将无法运行
          • 投了反对票,因为那里的 Maven 指南根本没有回答 OP 问题(但是下面的一些答案确实如此)。
          猜你喜欢
          • 1970-01-01
          • 2011-07-20
          • 2012-10-28
          • 1970-01-01
          • 2017-06-29
          • 2011-01-04
          • 2018-06-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多