Как скопировать jar-файлы Bundle-classpath и их зависимости из репозитория maven в мою локальную папку lib? - PullRequest
3 голосов
/ 07 июля 2011

Мы разрабатываем приложение Eclipse RCP . Мы решили использовать SVN для системы контроля версий. Мы могли бы экспортировать продукт Eclipse в среду Eclipse. Все работало нормально.

Но

Некоторые из наших плагинов имеют зависимости от обычных java-файлов, использующих bundle-classpath в их manifest.mf. До сих пор мы помещали эти банки в репозиторий SVN. Мы «слышали», что неправильно помещать jar-файлы в svn, и мы должны использовать maven-tycho и помещать эти jar-файлы в хранилище maven для этой цели.

Итак, мы перенесли банки из репозитория SVN в репозиторий Maven. Затем мы захотели настроить новую среду разработки, мы проверили проекты из svn, и у них были ошибки компиляции, потому что у нас нет jar!

Мы использовали m2eclipse и определили все зависимости в моих только что созданных pom.xml файлах. цель копирования maven-dependency-plugin и выведите список всех jar-файлов, а затем мы запустим mvn validate, чтобы получить jar-файлы в нашу папку lib. Это сработало, но мне кажется немного уродливым. Потому что pom.xml моего плагина выглядит как определение каждой зависимости дважды:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.1</version>
            <executions>
                <execution>
                    <id>copy-bundle-classpath-libs</id>
                    <phase>validate</phase>
                    <goals>
                        <goal>copy</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>lib</outputDirectory>
                        <overWriteReleases>true</overWriteReleases>
                        <overWriteSnapshots>true</overWriteSnapshots>
                        <overWriteIfNewer>true</overWriteIfNewer>
                        <stripVersion>true</stripVersion>
                        <artifactItems>
                            <artifactItem>
                                <groupId>MyGroup</groupId>
                                <artifactId>MyJar</artifactId>
                                <version>SNAPSHOT</version>
                            </artifactItem>
                        </artifactItems>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
<dependencies>
    <dependency>
        <groupId>MyGroup</groupId>
        <artifactId>MyJar</artifactId>
        <version>SNAPSHOT</version>
        <type>pom</type>
        <scope>compile</scope>
    </dependency>
</dependencies>

Есть ли способ избавиться от этого?

Кроме того, если у MyJar.pom есть другие зависимости, они мне тоже нужны в моей локальной библиотеке. Есть ли способ скопировать эти транзитивные зависимости в мою локальную папку lib ?

Я попробовал цель копирования-зависимостей , но он пытается найти файлы других плагинов, от которых зависит мой плагин. Мне просто нужно скопировать обычные банки в мою локальную библиотеку. Мои другие плагины уже есть рядом со всем их исходным кодом как проект плагина. Мне не нужны их банки. Могу ли я отфильтровать их? Я попробовал это безуспешно:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <configuration>
                <excludeGroupIds>MyGroup</excludeGroupIds>
                <outputDirectory>lib</outputDirectory>
                <overWriteReleases>true</overWriteReleases>
                <overWriteSnapshots>true</overWriteSnapshots>
                <overWriteIfNewer>true</overWriteIfNewer>
                <stripVersion>true</stripVersion>
            </configuration>
            <executions>
                <execution>
                    <id>copy-dependencies</id>
                    <phase>validate</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

Спасибо

1 Ответ

1 голос
/ 07 июля 2011

вам нужно решить, хотите ли вы скопировать транзитивные зависимости или нет.

maven-dependency-plugin [1] позволяет копировать либо транзитивные зависимости (цель "copy-dependencies", нужно добавлять зависимости в секцию зависимостей только в pom), либо только определенные артефакты без транзитивных зависимостей (цель "copy", нужно добавить артефакты только в раздел конфигурации плагина). При использовании зависимостей копирования вы также можете включать / исключать определенные артефакты из цепочки транзитивных зависимостей, см. [2].

-

[1] http://maven.apache.org/plugins/maven-dependency-plugin/

[2] http://maven.apache.org/plugins/maven-dependency-plugin/copy-dependencies-mojo.html

...