【发布时间】:2011-06-15 07:05:34
【问题描述】:
我正在寻找有关如何创建新的 maven 原型的指南,这些原型涉及使用参数来创建目录和文件名,其中参数用作文件名中的前缀以及由创建的包结构/目录的一部分原型。
我能找到的只是关于如何制作非常简单的项目的非常简单的说明。
【问题讨论】:
标签: java maven archetypes
我正在寻找有关如何创建新的 maven 原型的指南,这些原型涉及使用参数来创建目录和文件名,其中参数用作文件名中的前缀以及由创建的包结构/目录的一部分原型。
我能找到的只是关于如何制作非常简单的项目的非常简单的说明。
【问题讨论】:
标签: java maven archetypes
来自 maven 文档:http://maven.apache.org/archetype/archetype-models/archetype-descriptor/archetype-descriptor.html
文件集定义了位于 jar 文件中的项目文件被 Archetype 插件用于生成项目的方式。如果文件或目录名称包含 property 模式,则将其替换为相应的属性值。
如果您可以将文件命名为
__artifactId___local.properties
...当您使用 artifactId=foo 生成项目时,它将包含此文件:
foo_local.properties
【讨论】:
underscore = _ 并将文件命名为 Blah__underscore____artifactId_ –
我认为我们遇到了同样的问题,最后我通过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} 作为速度模板
【讨论】:
【讨论】:
即使我也在寻找同样的东西。 甚至我发现 Maven 主页非常基础,无法满足我们的要求。
我什至试过HowToCreateMavenArchetypeFromProject 但我还有一个问题。生成该原型类型的项目时如何调用该原型的特定文件。具体来说,如果我有一个 java 类 App.java 如何在创建项目时调用它?
create-archetype-from-project 发生的情况是它创建了一个具有相同文件和目录结构的项目,我们需要再次运行它以使其生效。
此外,${groupId} 之类的东西只能在 maven 文件中使用。如果我有一个属性文件并想使用用户输入的 artifactId 怎么办?
如果您遇到任何好东西,请告诉我。同时,当我找到任何解决方案时,我也会通知您。
谢谢
【讨论】:
一旦我发现 Velocity 模板被用作原型流程的一部分,我想我找到了一个对我有更多帮助的网站。
【讨论】:
为什么不使用 maven 网站本身?
http://maven.apache.org/guides/mini/guide-creating-archetypes.html
【讨论】:
archetype-metadata.xml,否则您的集成测试将无法运行