2017-02-20 54 views
-1

У меня есть проект java с тремя модулями.Как указать путь к файлу из главной банки, а не для зависимости JAR

[ ] Utils 
    ----->code 
    ----->pom.xml 
[ ] Module B 
    ----->Resources\config.xml 
    ----->code 
    ----->pom.xml 
[ ] Module C 
    ----->Resources\config.xml 
    ----->code 
    ----->pom.xml 

Модуль Utils является зависимость для обоих модулей A и B. В модуле утилиты есть функция «ReadConfig», которая использует как ModuleB и ModuleC. Модуль B и модуль C имеют разные конфигурации в папке ресурсов.

Оба модуля B и модуля C должны идеально работать как автономные банки с зависимостями, и читать 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.

Мой вопрос являются:

  1. Что является лучшей практики в этом сценарии. Если два модуля используют другой файл конфигурации.
  2. Как заставить intellij/netbeans запускать модуль A/B как автономный (jar с зависимостями) при запуске модулей (если я выполняю сборку mvn: single он генерирует одну банку с зависимостями, которые работают. Я хочу знать, как это сделать IntelliJ)
+0

Непонятно, о чем вы просите, также, пожалуйста, задайте один вопрос одновременно, так как эти два не связаны каким-либо образом. –

ответ

0

Если вам нужно прочитать какой-либо файл из директории, откуда вы запустите файл банк приложения, затем просто использовать: (она будет решена, как по отношению к директории, откуда вы запускаете приложение)

File f = new File("someDirInDirWhereMyJarIsRunFrom/myConfig.xml"); 
FileInputStream fis = new FileInputStream(f); 
// read the "fis" 

это предполагает, что структура вашей папки приложения выглядит так:

+ YourAppFolder 
    |---> yourApp.jar 
    |---+ someDirInDirWhereMyJarIsRunFrom 
     |--->myConfig.xml 
+0

Спасибо! Это то, что я закончил делать. – t0m9er

 Смежные вопросы

  • Нет связанных вопросов^_^