Maven项目中的非Maven依赖项

时间:2014-01-08 10:33:06

标签: java maven intellij-idea

如何在IntelliJ IDEA中添加外部jar文件作为Maven项目的依赖项?因为当我在依赖列表中添加它并尝试使用Maven进行编译时,我收到了一个错误,即无法找到该依赖项。

3 个答案:

答案 0 :(得分:1)

理想情况下,您应该使用mvn deploy:deploy-file将JAR部署到您的存储库。

如果不可能,您可以将依赖关系scope设置为system,然后在依赖关系中包含systemPath,从而为jar提供该路径。这在POM Reference - dependencies中进行了解释,并附带一个警告,即依赖于具有system范围依赖关系的工件的任何工件也希望通过systemPath找到jar。

答案 1 :(得分:1)

你可以

  • 定义一个像这样的系统/本地依赖:

    <dependency>
      <groupId>example</groupId>
      <artifactId>example</artifactId>
      <version>1.0.0</version>
      <scope>system</scope>
      <systemPath>lib/example-1.0.0.jar</systemPath>
    </dependency>
    

正如Gimby指出的那样,请注意系统依赖性应该“只是在那里”,因此它们不会与您的工件一起打包和部署。请参阅this question以供参考。

  • 将工件安装到您的本地仓库:

    mvn install:install-file -Dfile=<path-to-file> \
                         -DgroupId=<myGroup> \
                         -DartifactId=<myArtifactId> \
                         -Dversion=<myVersion> \
                         -Dpackaging=<myPackaging> \
                         -DlocalRepositoryPath=<path-to-my-repo>
    

答案 2 :(得分:0)

步骤1:在目标maven-install-plugin中将install-file配置为pom.xml

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-install-plugin</artifactId>
    <executions>
        <execution>
            <id>install-external-non-maven-jar-MWS-Client-into-local-maven-repo</id>
            <phase>clean</phase>
            <configuration>
                <repositoryLayout>default</repositoryLayout>
                <groupId>com.amazonservices.mws</groupId>
                <artifactId>mws-client</artifactId>
                <version>1.0</version>
                <file>${project.basedir}/lib/MWSClientJavaRuntime-1.0.jar</file>
                <packaging>jar</packaging>
                <generatePom>true</generatePom>
            </configuration>
            <goals>
                <goal>install-file</goal>
            </goals>
        </execution>
    </executions>
</plugin>

请确保根据您的实际文件路径编辑file路径(建议将这些外部非Maven jar放在某个文件夹中,例如lib,然后将此{{1} }项目中的文件夹,以便使用项目特定的相对路径,并避免添加系统特定的绝对路径。

如果您有多个外部jar,只需对同一lib中的其他jar重复<execution>

第2步:如上所示,在maven-install-plugin文件中配置了maven-install-plugin之后,您必须照常在pom.xml中使用这些jar :

pom.xml

请注意, <dependency> <groupId>com.amazonservices.mws</groupId> <artifactId>mws-client</artifactId> <version>1.0</version> </dependency> 仅将您的外部jar复制到本地maven-install-plugin Maven存储库。而已。它不会自动将这些jar作为项目的Maven依赖项包含在内。

这是次要的要点,但有时容易错过。