Maven und Eclipse: Eine zuverlässige Möglichkeit, einem Projekt Nicht-Maven-Gläser oder externe Gläser hinzuzufügen?

Maven ist großartig. Es hält mich größtenteils von der Hölle der Jar-Abhängigkeit ab, indem es Versionen von abhängigen Paketen in der Datei angibtpom Konfiguration und wendet sie automatisch an. Es ist auch hervorragend in Eclipse über m2e integrierbar, sodass die Dinge in einer IDE nahtlos funktionieren.

Dies alles ist ideal für Abhängigkeiten, die Maven weltweit bekannt sind. Manchmal gibt es jedoch Bibliotheken, die in ein Projekt aufgenommen werden müssen, das in den Maven-Repos nicht verfügbar ist. In diesem Fall füge ich sie normalerweise zu a hinzulib/ Verzeichnis in meinem Projekt. Solange sie im Klassenpfad sind, kompilieren sich die Dinge.

Das Problem besteht jedoch darin, dass sie beim Importieren eines Projekts automatisch einbezogen werden. Ich habe dieses Problem mit halbgebackenen Fixes und Hacks viel zu lange toleriert. Jedes Mal, wenn jemand dieses Projekt installiert, muss er angewiesen werden, die Gläser manuell hinzuzufügenlib/ zu ihrem Eclipse-Erstellungspfad, damit alle Fehler verschwinden. So etwas wie das folgende:

Ich suche nach einer Möglichkeit, diesen Prozess auf eine Weise zu automatisieren, die mit beiden funktioniertmvn Kommandozeilenprogramm und Eclipse: Eclipse steht im Vordergrund, weil es schön ist, Projekte zu haben, die nur kompiliert werden, wenn Sie sie importieren.

Ich möchte weder einen Repo-Server dafür einrichten, noch habe ich firmeneigene Komponenten, die eine Einrichtung vor Ort rechtfertigen würden. Ich habe nur einige JAR-Dateien, in denen die Entwickler Maven nicht verwenden. und ich möchte mit ihnen kompilieren ... Ich sollte sie nur in die Verteilung meiner Software einbeziehen können, oder?

Ich bin wirklich auf der Suche nach einem vernünftigen Weg, dies umzusetzen, der auch in Eclipse problemlos funktioniert.Dies ist eine Lösung Ich habe vielversprechend gefunden, aber es scheint definitiv keine maßgebliche Lösung für dieses Problem zu geben. Das einzige andere, was nahe kommt, ist dasMaven-Addjars-Plugin, was okay funktioniert aber nur auf der Kommandozeile. Dieses Plugin ist nicht schlecht und hat eine ziemlich vernünftige Konfiguration:

<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>

Wenn Sie jedoch versuchen, es in Eclipse zum Laufen zu bringen, müssen Sie das folgende Chaos über die Lebenszykluszuordnung zu Ihrem System hinzufügenpom.xml, die ich nie zur Arbeit bekommen habe; Ich glaube nicht einmal, dass es so konfiguriert ist, dass es dem Eclipse-Erstellungspfad tatsächlich etwas hinzufügt.

<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>

Antworten auf die Frage(3)

Ihre Antwort auf die Frage