我有一个包含 3 个模块的 java 项目。
[ ] Utils
----->code
----->pom.xml
[ ] Module B
----->Resources\config.xml
----->code
----->pom.xml
[ ] Module C
----->Resources\config.xml
----->code
----->pom.xml
utils 模块是 Module A 和 Module B 的依赖项。utils 具有 ModuleB 和 ModuleC 都使用的“ReadConfig”功能。模块 B 和模块 C 在资源文件夹中有不同的配置。
理想情况下,模块 B 和模块 C 都应作为具有依赖项的独立 jar 运行,并从目标目录(jar 所在的目录)中读取 config.xml。
目前我通过以下方式获取配置文件位置:
public static final String JAR_PATH = Constants.class.getProtectionDomain().getCodeSource().getLocation().getPath();
public static final String CONFIG_PATH = JAR_PATH.substring(0, JAR_PATH.lastIndexOf('/')) + "/config.xml";
此代码位于 Utils 模块中。
问题是,在 IntelliJ(和 netbeans)中,当我运行项目时,JAR_PATH 是 Utils 目标目录。我希望它指向模块 A 或模块 B 目标目录。
我的问题是:
- 在这种情况下,最佳做法是什么。其中两个模块使用不同的配置文件。
- 如何让 intellij / netbeans 在运行模块时将模块 A / B 作为独立(带有依赖项的 jar)运行(如果我执行 mvn assembly:single 它会生成一个具有有效依赖项的 jar。我想知道如何从 intellij 做到这一点)