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

如何在Maven中组织源代码生成?

容修贤
2023-03-14

我有一个Maven插件,它为我的java项目生成源代码,并将它们放在“target/generated sources”文件夹中。我在编译时需要这些源代码。我想在我的项目中有它们,同时修改它,已经生成。当然,我想把它们放在“src”文件夹下的正确文件夹中,而不是放在“target/generated sources”文件夹中。我如何使用Maven来组织它?

换句话说,我希望能够:

>

  • 通过运行我的特殊源代码生成插件的某些目标生成我需要的源代码(已经完成,源代码有我指定的包)

    将这些生成的源移到“src/main/java/…”standart Maven布局的文件夹。

    将它们从目标/生成源文件夹中删除,因为否则mvn清洁安装命令会引发错误,即我有“重复类”。事实上,如果我只是将生成的源从目标复制到src-我必须使用相同的名称和包的类,尽管其中一个位于目标文件夹中。

    哪些Maven插件可以用它进行hlp?我想这是一项典型的任务。

  • 共有3个答案

    赏弘
    2023-03-14

    如果你的插件工作正常,它会将生成的源代码添加到内部项目中,其他插件(如maven编译器插件)会将其提取并编译生成代码。

    在您的插件代码中,您可以使用类似的方法来实现这一点:

    mavenProject.addCompileSourceRoot( getOutputDirectory().getAbsolutePath() );
    
    龚昊然
    2023-03-14

    您应该看看buildhelper插件。它允许您指定其他源目录(例如目标/生成的源)。另请参见maven构建助手maven插件的使用。

    汪胡非
    2023-03-14

    maven中的标准解决方案是将所有源代码生成为Target/生成-源代码,所有来自Target/生成-源代码和来自src的源代码都编译成Target/class并合并到Target jar中。

    插件不应该接触src目录下的文件,因为这些文件是由版本控制系统(例如git)管理的。

    如果插件写得不好,并且来自target/生成源的源文件没有自动编译成target,那么使用targetbuild helper:add sourcefrom build helper Maven plugin,正如@James Kingsbery所说的那样。

    在maven-com4j-plugin源代码中有以下注释:

    /**
       * Directory in which to create the Java COM wrapper files. This directory
       * will be added to the Maven project's compile source directory list and
       * will therfore be auto-compiled when the Maven compile phase is run.
       * 
       * @parameter expression="${outputDirectory}"
       *            default-value="${project.build.directory}/generated-sources/com4j/java"
       */
    

    更重要的部分和问题的解决方案是:

    该目录将被添加到Maven项目的编译源目录列表中,并且在Maven编译阶段运行时自动编译

    所以,生成的源代码应该自动编译并归档到构建的jar中。

     类似资料:
    • freeRTOS为每个支持的处理器分支都提供了一个提前配置好的,包含必要的源代码及头文件的示例工程。强烈推荐以这些示例工程为基础创建用户自己的应用。这篇文档就是帮助如何去找到和理解这些示例工程。 目录结构 从官网下载的freeRTOS源代码中包含很多已经移植好的例程,虽然文件数量很多,但是其实freeRTOS的内核文件仅仅只包含3个文件(软件定时器、事件组、协程都是可选功能)。 下载文件的根目录下

    • 1 前言 详细分析源代码之前,如果能对其代码文件的基本结构有个大概的认识和分类,对于代码的分析将是大有裨益的。本节内容不多,我想并不是说它不重要! 2 源代码组织结构 Libevent的源代码虽然都在一层文件夹下面,但是其代码分类还是相当清晰的,主要可分为头文件、内部使用的头文件、辅助功能函数、日志、libevent框架、对系统I/O多路复用机制的封装、信号管理、定时事件管理、缓冲区管理、基本数据

    • 我还被告知要做的一件事是将带有Lombok注释的代码放在中,而不是放在中。我假设我保持了与中相同的包目录结构。 这看起来有点奇怪,但我这样做了,并且lombok生成了包含所有getter/setter/equals/hashcode等方法的源文件。它们被放置在例如中。这是我在使用其他代码生成工具(如XJC)后所期望的。 我的问题是:如何使生成的源代码对eclipse和编译环境“可见”?我到处都是编

    • 我有一个由许多maven项目组成的应用程序。我在日蚀中工作。一些项目使用Maven插件为Web服务等生成存根类。 当我将项目导入到新的工作区时,我必须发出maven generate sources命令,然后附加源文件夹以在每个项目上构建路径。我处理的应用程序有5-6个以上的项目需要这些步骤。 是否有一个插件可以安装在Eclipse中以获取生成的源代码,或者甚至是一个生成源代码并更新构建路径以保存

    • 如何在maven pom中做到这一点.xml当我在单个模块中运行mvn干净安装时? 编译主源代码 调用源代码中的主类,该源代码被编译以生成另一个源代码 组1和2并再次执行编译 在打包阶段,原始源代码和生成的源代码应该在jar中

    • 代码组织 待更新……