首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将任意目录分配给Maven/Gradle中的软件包

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

Stack Overflow用户
提问于 2019-03-15 17:07:50
回答 1查看 55关注 0票数 1

我正在做一个结构不同寻常的项目。它不是由构建系统构建的,而是由IntelliJ IDEA集成开发环境构建的。我知道,这种方法通常是很差和脆弱的。但我不得不接受这一点。

IDEA的关键特性是能够将任意包分配到目录。我正在做的项目很大程度上依赖于这个功能(这个项目非常复杂和古老)。

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

而在磁盘上,结构如下:

代码语言:javascript
复制
└───src
    ├───database
    ├───reports
    └───rest

据我所知,像Maven和Gradle这样的构建系统可以处理多个源根。例如,在Gradle中可以指定几个目录:

代码语言:javascript
复制
sourceSets {
    main {
        java {
            srcDirs 'src'
            srcDirs 'src1'
            srcDirs 'src2'
        }
    }
 }

但在Java内部,它需要以下层次结构(根据src包):

代码语言:javascript
复制
└───src
    └───com
        └───mycompany
            ├───internal
            └───external

似乎没有办法改变Maven/Gradle的这种开箱即用的行为...嗯,我可以使用Ant作为替代(它非常灵活),但这种方法太过迫切和乏味。或者我需要为Maven/Gradle编写新的插件来生成IDEA项目文件?

EN

回答 1

Stack Overflow用户

发布于 2019-03-18 21:43:05

从字面上讲,Java编译器并不关心源代码是否位于与其包名称匹配的文件夹中。

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

代码语言:javascript
复制
sourceSets {
    main {
        java {
            srcDirs "src/database", "src/reports", "src/rest"
        }
    }
}

然后按照IntelliJ documentation进行导入。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55179001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档