Maven并将JAR添加到系统范围

我的Android项目中有一个JAR,我希望它被添加到最终的APK中。 好的,我去了:

    <dependency>
        <groupId>com.loopj.android.http</groupId>
        <artifactId>android-async-http</artifactId>
        <version>1.3.2</version>
        <type>jar</type>
        <scope>system</scope>
        <systemPath>${project.basedir}/libs/android-async-http-1.3.2.jar</systemPath>
    </dependency>

但是当我运行mvn package我收到了警告:

[WARNING] Some problems were encountered while building the effective model for **apk:1.0
[WARNING] 'dependencies.dependency.systemPath' for com.loopj.android.http:android-async-http:jar should not point at files within the project directory, ${project.basedir}/libs/android-async-http-1.3.2.jar will be unresolvable by dependent projects @ line 36, column 25

在最后的APK中,没有JAR。

我如何解决这个问题?


你需要将jar添加到你的本地maven仓库。 或者(更好的选项)指定适当的存储库(如果存在),以便它可以由maven自动下载

在任何一种情况下,从依赖项中移除<systemPath>标记


我不知道真正的原因,但Maven推动开发者将所有库(自定义)安装到一些maven仓库中,所以scope:system不是很受欢迎,一个简单的解决方法是使用maven-install-plugin

遵循以下用法:

用这种方式编写你的依赖关系

<dependency>
    <groupId>com.mylib</groupId>
    <artifactId>mylib-core</artifactId>
    <version>0.0.1</version>
</dependency>

然后添加maven-install-plugin

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-install-plugin</artifactId>
    <version>2.5.2</version>
    <executions>
        <execution>
            <id>install-external</id>
            <phase>clean</phase>
            <configuration>
                <file>${basedir}/lib/mylib-core-0.0.1.jar</file>
                <repositoryLayout>default</repositoryLayout>
                <groupId>com.mylib</groupId>
                <artifactId>mylib-core</artifactId>
                <version>0.0.1</version>
                <packaging>jar</packaging>
                <generatePom>true</generatePom>
            </configuration>
            <goals>
                <goal>install-file</goal>
            </goals>
        </execution>
    </executions>
</plugin>

注意phase:clean ,把你的自定义库安装到你的仓库中,你必须运行mvn clean然后mvn install


系统范围仅用于处理“系统”文件; 坐在某个固定位置的文件。 /usr/lib${java.home} (例如tools.jar )。 它不是为了支持项目中的杂项.jar文件而设计的。

作者故意拒绝将路径扩展工作正确地阻止你。 因此,在短期内,您可以使用install:install-file安装到本地仓库,然后有一天使用仓库管理器进行分享。

链接地址: http://www.djcxy.com/p/29735.html

上一篇: Maven and adding JARs to system scope

下一篇: build maven project with propriatery libraries included