2016-02-18 3 views
0

Я пишу Java-приложение, которое использует некоторые библиотеки из третьего приложения-приложения, которое работает на моем сервере. На данный момент я создаю свое приложение с помощью appassembler-maven-plugin. Этот плагин копирует мои банки (приложение и зависимости) в папку lib, генерирует shellscript в каталоге bin.appassembler-maven-plugin добавить пользовательскую запись в classpath

Путь к классам создается в этом shellscirpt. Это решение работает, но я дублирую банки-зависимые (вовремя в моем приложении и в приложении thirdparty-приложение пишут приложение). Путь к классам моего приложения thirdparty задается в переменной, подобной $ THIRDPARTYAPP_CLASSPATH.

Я хочу установить зависимости в моем pom.xml, чтобы они не добавляли их в lib и classpath и хотели бы добавить systemvar $ THIRDPARTYAPP_CLASSPATH в свой shellscript, так что мое приложение использует банки от установленного третьего участника-приложения.

В данный момент я делаю это вручную (редактирование shellscript после сборки), и он работает. Есть ли какой-либо метод в appassembler-maven-plugin, чтобы автоматически добавить систему systemvar в путь к классам?

Я ничего не нашел в документации и других вопросах, связанных с подобной проблемой, не так хорошо.

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>appassembler-maven-plugin</artifactId> 
    <version>1.8.1</version> 
    <executions> 
     <execution> 
      <phase>package</phase> 
      <goals> 
       <goal>assemble</goal> 
      </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <assembleDirectory>${project.build.directory}/appassembler</assembleDirectory> 
     <extraJvmArguments>-Xms512m -Xmx1024m</extraJvmArguments> 
     <generateRepository>true</generateRepository> 
     <repositoryName>lib</repositoryName> 
     <repositoryLayout>flat</repositoryLayout> 
     <includeConfigurationDirectoryInClasspath>true</includeConfigurationDirectoryInClasspath> 
     <platforms> 
      <platform>unix</platform> 
     </platforms> 
     <programs> 
      <program> 
       <mainClass>${mainClass}</mainClass> 
       <id>app</id> 
      </program> 
     </programs> 
    </configuration> 
</plugin> 
+0

Во-первых, зачем настраивать 'assembleDirectory' по умолчанию? Вы можете настроить создание ' setup-env', который может определить новую часть classpath с помощью 'CLASSPATH_PREFIX', которая должна решить вашу проблему. (Кстати: почему бы не использовать uptodate версию appassembler?) ... – khmarbaise

+0

Спасибо! Это именно то, что я искал. И спасибо за подсказку относительно версии и каталога. – Daniel

ответ

0

Вы можете настроить для создания <environmentSetupFileName>setup-env</environmentSetupFileName>, который может определить новый путь к классам часть через CLASSPATH_PREFIX, которая должна решить вашу проблему.