Maven e eclipse: uma maneira confiável de adicionar non-Maven ou jars externos a um projeto?

Maven é ótimo. Isso principalmente me mantém fora do inferno de dependência de jar especificando versões de pacotes dependentes nopom configuração e as aplica automaticamente. Ele também tem uma ótima integração com o Eclipse via m2e, para que as coisas funcionem perfeitamente em um IDE.

Isso tudo é ótimo para dependências que são globalmente conhecidas pelo Maven. No entanto, às vezes, há bibliotecas que precisam ser incluídas em um projeto que não está disponível nos repositórios do Maven. Neste caso, eu costumo adicioná-los a umlib/ diretório no meu projeto. Contanto que eles estejam no caminho de classe, as coisas são compiladas.

No entanto, o problema é fazer com que eles sejam incluídos automaticamente ao importar um projeto. Eu tenho tolerado esse problema com correções e hacks semi-assados ​​por muito tempo. Toda vez que alguém instala este projeto, eu tenho que dizer-lhes para adicionar manualmente os frascos emlib/ ao caminho de construção do Eclipse para que todos os erros desapareçam. Algo como o seguinte:

Eu estou procurando uma maneira de automatizar este processo de uma forma que funciona com omvn programa de linha de comando e Eclipse: mais uma ênfase no Eclipse, porque é bom ter projetos que apenas compilam quando você os importa.

Eu não quero configurar um servidor de repo para isso, nem tenho qualquer componente proprietário interno que justifique a criação de qualquer coisa localmente. Eu só tenho alguns arquivos jar onde os desenvolvedores não usam o Maven; e eu quero compilar com eles ... eu deveria ser capaz de incluí-los na distribuição do meu software, certo?

Eu realmente estou procurando uma maneira razoável de implementar isso que também funcionará no Eclipse sem problemas.Esta é uma solução Eu achei promissor, mas definitivamente não parece ser uma solução autoritária para este problema. A única outra coisa que chega perto é amaven-addjars-plugin, o que funciona bem, mas apenas na linha de comando. Este plugin não é ruim e tem uma configuração bastante razoável:

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

No entanto, tentar executá-lo no Eclipse envolve adicionar a seguinte confusão sobre o mapeamento do ciclo de vida ao seupom.xmlque nunca cheguei a trabalhar; Eu nem sequer acho que está configurado para realmente adicionar qualquer coisa ao caminho de compilação do 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