生成项目时,如何有条件地在原型中包含或排除文件?

Dan*_*len 22 java maven-2 archetypes gradle

我正在为我们的项目(Weld)创建Maven 2原型.我希望能够根据在其中定义的属性的值来控制将哪些文件放入生成的项目中archetype:generate.例如,我预见到以下提示:

Define value for groupId: : com.example
Define value for artifactId: : myproject
Define value for package:  com.example: :
Define value for includeGradleSupport: : y
Run Code Online (Sandbox Code Playgroud)

根据includeGradleSupport的值,我想build.gradle在生成的项目中包含(或不包括)该文件.如果用户不想要Gradle支持,我不希望用不必要的文件混乱生成的项目.

另一个例子是,如果用户想要Jetty支持,我可能需要提供一个Jetty Web片段(也许是为了激活一个监听器).

这完全取决于开发人员打算使用的项目定制.虽然我可以创建一个完整的其他原型,但有时候这些更改很轻微,以至于包含/排除文件会更容易.

有没有办法使用archetype-metadata.xml描述符控制此行为?

Mat*_*ugh 0

我可以看看在原型插件中启用此功能需要什么编码。

我认为今天要做到这一点的主要手段是在原始构建期间有条件地生成两种不同的原型工件。然后,原型用户将明确使用 yourarchetype-withthing 或 yourarchetype-withoutthing。

我知道这并不完全是您所追求的,并且我同意您所要求的是一个合理的用例。

  • 嗯,从同一个项目创建多个工件将违背 Maven 的理念(一个项目 => 一个工件)。我真的认为这将是一件有用的事情。我可以使用文件内部的速度来更改内容,但我不能做的是包含或排除整个文件,这实际上是同一想法的扩展。我期待你的原型;) (2认同)