Maven and eclipse: niezawodny sposób dodawania słoików innych niż Maven lub zewnętrznych do projektu?

Maven jest świetny. W większości przypadków trzyma mnie z dala od piekła zależności od jar, określając wersje pakietów zależnych wpom konfiguracja i stosuje je automatycznie. Ma także doskonałą integrację z Eclipse za pośrednictwem m2e, dzięki czemu wszystko działa bezproblemowo w środowisku IDE.

Jest to idealne rozwiązanie dla zależności znanych na całym świecie Maven. Czasami jednak istnieją biblioteki, które muszą być włączone do projektu, który nie jest dostępny w repozytoriach Maven. W tym przypadku zazwyczaj dodaję je dolib/ katalog w moim projekcie. Dopóki znajdują się w ścieżce klasy, rzeczy się kompilują.

Problem polega jednak na tym, aby były one automatycznie włączane podczas importowania projektu. Zbyt długo tolerowałem ten problem z na wpół wypiekami i hackami. Za każdym razem, gdy ktoś instaluje ten projekt, muszę im powiedzieć, aby ręcznie dodali słoikilib/ do ścieżki budowania Eclipse, aby wszystkie błędy zniknęły. Coś w stylu:

Szukam sposobu na zautomatyzowanie tego procesu w sposób, który działa zarówno zmvn program wiersza poleceń i Eclipse: większy nacisk na Eclipse, ponieważ miło jest mieć projekty, które kompilują się po ich zaimportowaniu.

Nie chcę w tym celu konfigurować serwera repo, ani nie mam żadnych własnych, własnych komponentów, które gwarantowałyby konfigurowanie czegokolwiek lokalnie. Mam tylko pliki jar, w których programiści nie używają Mavena; i chcę się z nimi skompilować ... Powinienem być w stanie włączyć je do dystrybucji mojego oprogramowania, prawda?

Naprawdę szukam rozsądnego sposobu na zaimplementowanie tego, który również będzie działał w Eclipse bez żadnych problemów.To jedno rozwiązanie Znalazłem obiecujące, ale zdecydowanie nie wydaje się być autorytatywnym rozwiązaniem tego problemu. Jedyne, co się zbliża, towtyczka maven-addjars, która działa dobrze, ale tylko w linii poleceń. Ta wtyczka nie jest zła i ma dość rozsądną konfigurację:

<plugin>
    <groupId>com.googlecode.addjars-maven-plugin</groupId>
    <artifactId>addjars-maven-plugin</artifactId>
    <version>1.0.5</version>
    <executions>
        <execution>
            <goals>
                <goal>add-jars</goal>
            </goals>
            <configuration>
                <resources>
                    <resource>
                        <directory>${project.basedir}/lib/java-aws-mturk</directory>
                    </resource>
                    <resource>
                        <directory>${project.basedir}/lib/not-in-maven</directory>
                    </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
</plugin>

Jednak próba uruchomienia go w środowisku Eclipse wymaga dodania następującego bałaganu dotyczącego mapowania cyklu życia do swojegopom.xml, których nigdy nie miałem do pracy; Nie sądzę nawet, że jest skonfigurowany do dodawania czegokolwiek do ścieżki kompilacji Eclipse.

<pluginManagement>
    <plugins>
        <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
        <plugin>
            <groupId>org.eclipse.m2e</groupId>
            <artifactId>lifecycle-mapping</artifactId>
            <version>1.0.0</version>
            <configuration>
                <lifecycleMappingMetadata>
                    <pluginExecutions>
                        <pluginExecution>
                            <pluginExecutionFilter>
                                <groupId>
                                    com.googlecode.addjars-maven-plugin
                                </groupId>
                                <artifactId>
                                    addjars-maven-plugin
                                </artifactId>
                                <versionRange>
                                    [1.0.5,)
                                </versionRange>
                                <goals>
                                    <goal>add-jars</goal>
                                </goals>
                            </pluginExecutionFilter>
                            <action>
                                <execute />
                            </action>
                        </pluginExecution>
                    </pluginExecutions>
                </lifecycleMappingMetadata>
            </configuration>
        </plugin>
    </plugins>
</pluginManagement>

questionAnswers(3)

yourAnswerToTheQuestion