У меня было очень похожее требование для моего проекта.Я пытаюсь синтезировать его здесь, я надеюсь, что это может помочь вам:
Допустим, что проект структурирован следующим образом:
projectfoo (pom)
|- module1 (your binary dependency)
L module2 (the module that needs your dependency)
Давайте начнем с projectfoo pom:
<groupId>com.dyan.sandbox</groupId>
<artifactId>projectfoo</artifactId>
<version>0.0.1</version>
<packaging>pom</packaging>
<modules>
<module>module1</module>
<module>module2</module>
</modules>
Легко ....
Теперь модуль 1:
<parent>
<groupId>com.dyan.sandbox</groupId>
<artifactId>projectfoo</artifactId>
<version>0.0.1</version>
</parent>
<groupId>com.dyan.sandbox.projectfoo</groupId>
<artifactId>module1</artifactId>
<version>0.0.1</version>
<packaging>pom</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<id>make-your-resource</id>
<goals>
<goal>single</goal>
</goals>
<phase>package</phase>
<configuration>
<descriptors>
<descriptor>src/main/assembly/resources.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
... и файл дескриптора ( src /main / assembly / resources.xml ):
<assembly>
<id>resources</id>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>src/main/resources/</directory>
<outputDirectory>.</outputDirectory>
</fileSet>
</fileSets>
</assembly>
Я предполагаю, что вы ранее так или иначе сгенерировали свой двоичный ресурс и сохранили его в src / main /ресурсы .Приведенный выше код просто создает zip-артефакт вашего ресурса, это необходимый шаг для облегчения его внедрения в виде зависимости maven в module2.
Итак, теперь нам просто нужно добавить этот zip-артефакт в видеЗависимость в модуле 2:
<groupId>com.dyan.sandbox.projectfoo</groupId>
<artifactId>module2</artifactId>
<version>0.0.1</version>
<dependencies>
<dependency>
<groupId>com.dyan.sandbox.projectfoo</groupId>
<artifactId>module1</artifactId>
<version>0.0.1</version>
<classifier>resources</classifier>
<type>zip</type>
<scope>provided</scope>
</dependency>
</dependencies>
... и, наконец, разархивируйте его с помощью maven-dependency-plugin , в идеале в classpath модуля2 ( target / classes * 1033)*):
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unpack-your-resource</id>
<goals>
<goal>unpack-dependencies</goal>
</goals>
<phase>generate-resources</phase>
<configuration>
<!-- unzip the resources in compilation folder -->
<outputDirectory>${project.build.directory}/classes</outputDirectory>
<includeArtifactIds>module1</includeArtifactIds>
<excludeTransitive>true</excludeTransitive>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
... и все!
Янник.