【发布时间】:2022-06-30 03:02:57
【问题描述】:
我正在使用 JHipster 开发一个覆盖实体服务器子生成器的蓝图。所需的行为是将蓝图生成的项目中 /src/main/java/defaultpackageName/domain/ 中的所有文件替换为我生成的文件。这是我的代码(files.js):
const entityServerFiles = {
noHibernate: [
//domain files
{
path: 'src/main/java/XXX/domain/',
templates: [
{
file: 'Entity.java',
renameTo: generator => `${generator.persistClass}.java`
}
]
}
]
};
function writeFiles() {
return {
write() {
this.writeFilesToDisk(entityServerFiles, this, false);
}
}
}
module.exports = {
writeFiles
};
现在它只是在 /src/main/java/ 中创建一个文件夹 XXX,其中包含我生成的文件。
为了在正确的位置生成文件,我需要在 XXX in path: 'src/main/java/XXX/domain/' 中写什么?
我在 github 上对 generator-jhipster 项目进行了一些挖掘,询问用户默认 java 包名称的提示位于 /generator-jhipster/generators/java/index.cjs/ 中。这是整个代码https://github.com/jhipster/generator-jhipster/blob/main/generators/java/index.cjs 但我只是做了重要的部分:
const {
PACKAGE_NAME,
PACKAGE_NAME_DEFAULT_VALUE,
PRETTIER_JAVA_INDENT,
PRETTIER_JAVA_INDENT_DEFAULT_VALUE,
BUILD_TOOL,
BUILD_TOOL_DEFAULT_VALUE,
BUILD_TOOL_PROMPT_CHOICES,
} = require('./constants.cjs');
get prompting() {
return {
async showPrompts() {
if (this.shouldSkipPrompts()) return;
await this.prompt(
[
{
name: PACKAGE_NAME,
type: 'input',
validate: input => this.validatePackageName(input),
message: 'What is your default Java package name?',
default: () => this.sharedData.getConfigDefaultValue(PACKAGE_NAME, PACKAGE_NAME_DEFAULT_VALUE),
},
],
this.config
);
},
};
}
据我了解,我只需要从我的蓝图中访问 PACKAGE_NAME 常量,它应该可以工作。有什么想法吗?
【问题讨论】:
标签: javascript jhipster