【问题标题】:Maven archetype from project - how to preserve package names?项目中的 Maven 原型 - 如何保留包名称?
【发布时间】:2011-01-04 19:04:37
【问题描述】:

我正在尝试通过以下方式获取我的项目并从中生成原型:

archetype:create-from-project

问题是,我的项目具有 src/main/java 包结构 com.sample.app,但是当从原型生成项目时,原型必须具有用户想要的它,但我想这是不可能的。它似乎没有抓取 groupId 和 artifactId 并基于此输入生成archetype-resources/src/main/java

无论如何,这就是我认为有这个论点的原因:packageName

mvn archetype:create-from-project -DpackageName=com.sample.app

但是不行还是有archetype-resources/src/main/java/org/sample/app..

【问题讨论】:

    标签: java maven-3 maven-archetype


    【解决方案1】:

    create-from-project 目标通常会自动检测基本包名称并替换它,因此您最终会得到 \templateproject\target\generated-sources\archetype\src\main\resources\archetype-resources\src\test\java\Foo.java 的包声明为 ${package}

    使用几乎空的 hello-world 项目尝试原型插件和 create-from-project,您将看到生成的原型已删除包。这样,使用archetype:generate 的用户可以在生成时指定他的包名。

    【讨论】:

    • 我使用的原型插件的第一个版本发生了什么,它提取了包结构,我告诉自己,现在很酷,当我作为用户生成它并输入 groupId 和 artifactId 它将生成基本包结构......但什么也没发生......然后我使用了最新鲜的插件,在从项目创建原型时它甚至没有删除基本包结构......它有点在开发中,这是在源代码中Mojo : private String packageName;//寻找更好的解决包的方法!!!强制使用配置器
    • 哦,所以这取决于 Maven 插件版本。你用的是哪一个?
    • 首先是默认的,即在您未指定版本时提供,然后是 2.0-alpha-6-SNAPSHOT ...最后我使它与 2.0-alpha-4 一起使用 .. . 但可悲的是,我不知道是什么原因 :-) 但是非常感谢 mhaller,你为我指明了正确的方向
    • 顺便说一句,它只更改类顶部的“包”声明...它不会更改导入包名称...我已经从这个插件发疯了
    • create-from-project 旨在方便快速创建新的简单原型。通常,您需要手工制作原型,这样您就可以完全控制一切。
    猜你喜欢
    • 1970-01-01
    • 2011-03-15
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-22
    • 1970-01-01
    相关资源
    最近更新 更多