【问题标题】:Where to put maven generated webapp artifacts?在哪里放置 maven 生成的 webapp 工件?
【发布时间】:2015-08-19 07:43:07
【问题描述】:

我正在使用 swagger maven 插件来生成我的 swagger.json 文件。我希望它可以作为 webapp (src/main/webapp) 中的静态资源使用。

在 github 页面上的示例中,他们这样配置它。

<swaggerDirectory>generated/swagger-ui</swaggerDirectory>

我看不出这有什么用,因为它不在 webapp 文件夹中。我想你必须手动将它复制到有用的地方,但如果它不是自动化的,那么 maven 的意义何在。

我在我的项目中是这样配置的。

<swaggerDirectory>${basedir}/src/main/webapp/swagger</swaggerDirectory>

这允许我在开发期间(作为 Eclipse 项目)和部署时(作为构建的 war 文件)访问该文件。

问题是是否可以在通常的 src/main 文件夹中弹出生成的工件?

我已经从 jaxb 生成了代码,但它进入了目标文件夹中的 generate-sources 文件夹。然后将其添加为 eclipse 中的源文件夹,maven 知道将这些类添加到构建中。

我基本上只是想通过将我生成的代码转储到 src/main/webapp.我知道我必须 gitignore 这个文件。

【问题讨论】:

    标签: java maven swagger-maven-plugin


    【解决方案1】:

    我建议不要将生成的代码放入 src/main - 这将致力于源代码控制。此外,在您的情况下,文件本身是由 maven 插件生成的 - 它将在您构建项目时运行。

    宁可使用资源、战争、程序集...插件将文件复制到您构建的战争中。

    【讨论】:

    • 如果我 gitignore 它将不会致力于源代码控制。此外,希望能够在开发过程中使用它,因此我需要一种方法使其成为构建的一部分,但在我将其作为 Eclipse 项目运行时也可以访问。
    • 当您说作为 Eclipse 项目运行时 - 您使用的是 jetty/tomcat 插件吗?因为这些可以配置为基于目标文件夹中生成的战争运行。无论如何,我们正在争论最佳实践 - 这可能不适合您的特定情况
    • 这只是一个通过从SCM 导入maven 项目创建的eclipse 项目。所以项目结构是基于pom的。然后为了测试/运行它,它作为一个 web 项目添加到 eclipse 中的 tomcat 服务器设置中。它不是捆绑服务器。最佳实践是一回事,但我不能是唯一使用这个插件的人,我只是想确保它可以在没有任何问题的情况下工作。
    【解决方案2】:

    您可以将生成的文件放在target/generated-webapp 等目录中。然后使用resource plugin to copysrc/main/webbpptarget/generated-webapp 的所有其他文件。最后将war plugin 指向target/generated-webapp,因为它是warSourceDirectory

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      • 2014-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-03
      • 2012-11-12
      相关资源
      最近更新 更多