Я пишу 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>
Во-первых, зачем настраивать 'assembleDirectory' по умолчанию? Вы можете настроить создание ' setup-env environmentSetupFileName>', который может определить новую часть classpath с помощью 'CLASSPATH_PREFIX', которая должна решить вашу проблему. (Кстати: почему бы не использовать uptodate версию appassembler?) ... –
khmarbaise
Спасибо! Это именно то, что я искал. И спасибо за подсказку относительно версии и каталога. – Daniel