Я разрабатываю почтовый клиент OSGI с Maven после разработки программного обеспечения на основе компонентов. Я должен убедиться, что зависимости между всеми моими компонентами разрешены внутри контейнера OSGI, поэтому я не могу скопировать зависимости внутри сгенерированных JAR-файлов, иначе не было бы смысла использовать OSGI. Но есть одна зависимость, которую я действительно должен скопировать внутри JAR, это javax.mail
, потому что я не могу найти ни одного OSGI-совместимого пакета, который отправляет электронную почту.
Чтобы сделать это, я увидел эту страницу: https://maven.apache.org/plugins/maven-dependency-plugin/examples/copying-artifacts.html
Поэтому я отредактировал свой pom.xml
:
<project>
...
<build>
<plugins>
<plugin> <!-- to edit the MANIFEST.MF, required for OSGI -->
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>4.2.1</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Class-Path>lib/</Class-Path>
... OSGI instructions ...
</instructions>
</configuration>
</plugin>
<plugin> <!-- to copy the dependencies -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.1.1</version>
<executions>
<execution>
<phase>install</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
...
</project>
Но тег <artifactItems>
, похоже, не работает. Когда я mvn install
, он копирует ВСЕ зависимости в папку dependency/
, а не в папку lib/
. Как я могу скопировать только javax.mail
JAR в папку с именем lib/
?
Спасибо за помощь.