当前位置: 首页 > 知识库问答 >
问题:

有没有一种方法可以对原型生成的项目进行后处理?

司空温书
2023-03-14

假设我有一个原型,并从中生成一个项目。但我想通过命令行传递占位符的值来解析在生成后生成的项目的属性文件中的占位符。

例如,具有以下命令行:

mvn原型:创建-DarchetypeGroupId=...-DarchetypeartifactId=...-DarchetypeVersion=1.0-DgroupId=...-DartifactId=my-project-Dversion=1.0-SNAPSHOT-你好!

假设原型包含应用程序。具有以下内容的房地产(作为正在生成的项目的一部分):

问候=${你好}

是否可以将${hello}替换为“hello!”在项目作为mvn原型生成之后:create命令?

共有3个答案

马祺
2023-03-14

不确定我是否理解正确。对于项目创建后的后处理,可以使用param-Dgoals并调用自定义插件。

我不确定你的需求,但为什么你不能在项目生成过程中也这样做呢?

欧阳俊晖
2023-03-14

您可以在原型中定义其他属性,格式如下:https://maven.apache.org/archetype/maven-archetype-plugin/specification/archetype-metadata.html

例如:

定义文件:src\main\Resources\META-INF\maven\archetype-metadata.xml

<archetype-descriptor 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0"
  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" 
  name="modelant.metamodel.api">

<requiredProperties>
  <requiredProperty key="package"><defaultValue>${groupId}.${artifactId}</defaultValue></requiredProperty>

  <requiredProperty key="parentGroupId"><defaultValue>${groupId}</defaultValue></requiredProperty>
  <requiredProperty key="parentArtifactId"><defaultValue>${artifactId}</defaultValue></requiredProperty>
  <requiredProperty key="parentVersion"><defaultValue>${version}</defaultValue></requiredProperty>

  <requiredProperty key="metamodelUrl"/>
 </requiredProperties>
</archetype-descriptor>

在这里,您可以看到它定义了额外的必需属性,因此它们必须在对话框中强制提供,其中:

  • 某些属性可能没有价值-请参阅metamodelUrl

请注意:

  • thehttps://maven.apache.org/archetype/maven-archetype-plugin/advanced-usage.htmlApache maven关于原型的页面只提到调用“mvn安装”,以便在本地存储库中发布工件。这还不够-使用:mvn clean install“原型:更新本地目录”
吴胜
2023-03-14

是的,这是可能的。来自maven原型的高级使用指南:

如果用户想进一步自定义生成的项目,可以在src/main/Resources/META-INF/中添加一个名为archetype-post-generate.groovy的groovy脚本。此脚本将最终出现在生成的原型的META-INF文件夹中,并将在从此原型创建项目时执行。此groovy脚本可以访问ArchetypeGenerationRequest对象,以及用户指定的所有System.get属性()和所有原型生成属性。

 类似资料:
  • 问题内容: 我有一个.csv文件,如下所示: 我必须从文件中删除重复的电子邮件(整行)(即,上面示例中包含的行之一)。如何仅在字段1(用逗号分隔)上使用?根据,没有列选项。 我尝试了一些东西,但是没有用。 问题答案: 为了独特 所以逗号是定界符 对于关键字段1 测试结果:

  • 问题内容: 如果输入大小太小,则库会自动序列化 流中地图的执行,但是这种自动化不会并且也不会考虑地图操作的繁重程度。有没有办法 强制parallelStream()实际并行化CPU重映射? 问题答案: 似乎存在根本的误解。链接的“问答”讨论了由于OP没有 看到预期的加速,流显然不能并行工作。结论是,有没有好处在 并行处理工作负载是否太小,不,有一个自动回退到顺序执行。 实际上是相反的。如果您请求并

  • 我有五个属性的列表,每个属性有五个不同的值。我想生成它们的笛卡尔乘积,并过滤所有独特的排列。 一些背景: 我需要它们作为我的输入值来解决逻辑难题。在那里我对照他们检查规则以找到正确的解决方案。 也许一个简化的例子就能说清楚。 数据: 数据的笛卡尔乘积: 我想要的是: 我不想要的是: 我不希望同一个值多次出现。位置很重要,因此它应该具有置换性质,对于包含五个元素的列表,它应该具有置换性质。我猜输出大

  • 问题内容: Java的UUID类生成随机的UUID。但这由字母和数字组成。对于某些应用,我们只需要数字。有没有一种方法可以生成仅由Java中的数字组成的随机UUID? 问题答案: 如果您不想使用随机数,但是带有数字的UUID仅使用: 在这种情况下,左填充为40个零… 结果为: UUID:b55081fa-9cd1-48c2-95d4-efe2db322a54 in: UUID:0241008287

  • 问题内容: 在此问题中找到了我能找到的最接近的示例:https : //github.com/tensorflow/tensorflow/issues/899 使用此最小的可复制代码: 但是,返回的FLOPS始终为“无”。有没有一种方法可以具体测量FLOPS,尤其是PB文件? 问题答案: 有点晚了,但也许将来对某些访客有帮助。对于您的示例,我成功测试了以下代码段: 也可以将分析器与以下代码段结合使

  • 问题内容: 我正在开发一个新项目(),并创建了一个包含大量变量的Object。由于我打算为所有这些添加吸气剂和设置器,所以我想知道:是否存在在给定类中自动生成吸气剂和设置器的捷径? 问题答案: 在所需类的源代码窗口中弹出上下文菜单(即右键单击)。然后选择子菜单;从该菜单中进行选择将导致出现向导窗口。 选择您要为其创建getter和setter的变量,然后单击。