Пользовательский файл как зависимость - PullRequest
0 голосов
/ 16 февраля 2012

У меня есть проект maven с несколькими модулями,

Один из этих модулей создает пользовательский двоичный файл. Мне нужен этот файл для ввода в другой модуль.

Что я хочу сделать - это загрузить этот файл в качестве зависимости и использовать его в другом модуле с помощью ant-скрипта.

Я очень стараюсь с плагином сборки Maven и зависимостью: плагин копирования-зависимости, но безуспешно

Спасибо за любые предложения

1 Ответ

2 голосов
/ 18 февраля 2012

У меня было очень похожее требование для моего проекта.Я пытаюсь синтезировать его здесь, я надеюсь, что это может помочь вам:

Допустим, что проект структурирован следующим образом:

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>

... и все!

Янник.

...