maven - 将任意目录分配给Maven/Gradle中的软件包

标签 maven gradle intellij-idea build

我正在从事结构异常的项目。它不是由构建系统构建的,而是由IntelliJ IDEA IDE构建的。我知道,这种方法通常很差而且很脆弱。但是我必须忍受这一点。

IDEA的主要功能是可以将任意软件包分配给目录。我正在从事的项目在很大程度上依赖于此功能(该项目非常复杂且古老)。

我创建简化项目只是为了说明。例如,可以保留两个属于reports包的目录databasecom.mycompany.internal,并将com.mycompany.external包分配给rest目录:

Project structure in IDEA

在磁盘上时,其结构如下:

└───src
    ├───database
    ├───reports
    └───rest

据我所知,Maven和Gradle之类的构建系统可以处理多个源根。例如,在Gradle中可以指定几个目录:
sourceSets {
    main {
        java {
            srcDirs 'src'
            srcDirs 'src1'
            srcDirs 'src2'
        }
    }
 }

但是在src内部,Gradle需要以下层次结构(根据Java软件包):
└───src
    └───com
        └───mycompany
            ├───internal
            └───external

似乎没有办法立即改变Maven / Gradle的这种行为。。。嗯,我可以使用Ant作为替代方法(它非常灵活),但是这样的方法将非常必要和繁琐。还是我需要为Maven / Gradle编写新的插件来生成IDEA项目文件?

最佳答案

Java编译器实际上并不关心源位于与它们的程序包名称匹配的文件夹中。

因此,您在Gradle中唯一需要做的就是正确地配置源目录,例如:

sourceSets {
    main {
        java {
            srcDirs "src/database", "src/reports", "src/rest"
        }
    }
}

然后按照IntelliJ documentation进行导入。

关于maven - 将任意目录分配给Maven/Gradle中的软件包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55179001/

相关文章:

java - 如何在 Maven 的本地项目中安装依赖项?

java - 有没有办法从命令行配置 Maven POM 的版本?

intellij-idea - 在Kotlin中创建对象时如何添加自动括号(Intellij Idea)

java - 使用 IntelliJ IDEA 运行 Maven 项目

java - 为什么 Intellij 在多模块 git 项目中显示 'ghost' 更改?

maven - XJC 生成错误 : can't parse argument number

maven - Wildfly下加载Jackson JSR310的依赖冲突

gradle - 由于从http maven网站而不是https请求文件,导致Gradle构建失败

gradle - 基本Gradle复制任务不起作用(直到直接调用)

java - 错误 : No such property: sonatypeRepo for class: org. gradle.api.publication.maven.internal.deployer.DefaultGroovyMavenDeployer