繁体   English   中英

Maven拒绝从远程存储库下载aar打包的依赖项

[英]Maven refuse to download aar packaged dependency from remote repository

我想在我的java程序中使用这个android依赖项:

http://jcenter.bintray.com/com/o3dr/android/dronekit-android/2.9.0/

所以我将所有插件和存储库添加到我的maven pom文件中:

<repositories>
    <repository>
        <id>central</id>
        <name>bintray</name>
        <url>http://jcenter.bintray.com</url>
        <!--<snapshots>-->
            <!--<enabled>false</enabled>-->
        <!--</snapshots>-->
    </repository>
</repositories>

<pluginRepositories>
    <pluginRepository>
        <!--<snapshots>-->
            <!--<enabled>false</enabled>-->
        <!--</snapshots>-->
        <id>central</id>
        <name>bintray-plugins</name>
        <url>http://jcenter.bintray.com</url>
    </pluginRepository>
</pluginRepositories>

<build>
    <plugins>
        <plugin>
            <groupId>com.simpligility.maven.plugins</groupId>
            <artifactId>android-maven-plugin</artifactId>
            <version>4.1.0</version>

            <extensions>true</extensions>
            <configuration>
                <sign>
                    <debug>false</debug>
                </sign>
            </configuration>
        </plugin>
        ...

然后我将依赖项添加到同一个文件中:

    <dependency>
        <groupId>com.o3dr.android</groupId>
        <artifactId>dronekit-android</artifactId>
        <version>2.9.0</version>
        <type>aar</type>
    </dependency>

但没有任何反应,maven忽略它好像它不存在,如果我在scala文件中导入它的主包并用mvn clear install -U构建它,我得到这个错误:

[错误] /home/peng/git-drone/dronespike/src/main/scala/Main.scala:1:object o3dr不是包com的成员
[错误]导入com.o3dr.android._
[错误] ^

问题 :我该怎么做才能解决这个问题?

根据您的maven版本的要求,根据我之前面临的情况,您可能需要添加发布和快照的配置。 在我的情况下,一旦我指定了这些参数,我就能够获得lib:

<repositories>
    <repository>
        <id>central</id>
        <name>bintray-plugins</name>
        <url>http://jcenter.bintray.com</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>com.o3dr.android</groupId>
        <artifactId>dronekit-android</artifactId>
        <version>2.9.0</version>
        <type>aar</type>
    </dependency>
</dependencies>

没有它,没有下载依赖项。

使用Android包装,例如<packaging>apk</packaging>

如果Maven无法下载工件,那么在构建生命周期中它会更快地抱怨。 问题是工件已下载,但未使用。 aar不是标准的Maven工件,因此Maven不知道如何处理它。 使用它需要第三方插件扩展,因此使用android-maven-plugin 阅读其文档 ,它有一些正常工作的要求。 具体来说,你没有使用这里提到的android包装:

支持包装的使用:apk,aar或apklib

实际上,在查看插件源代码之前,它会在从aar添加到classpath之前检查android包装。

查看依赖项可用的bintray存储库,并通过其Set me up选项检查存储库设置,您的存储库坐标不正确,它们应该是:

<repositories>
    <repository>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
        <id>bintray-3d-robotics-maven</id>
        <name>bintray</name>
        <url>http://dl.bintray.com/3d-robotics/maven</url>
    </repository>
</repositories>
<pluginRepositories>
    <pluginRepository>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
        <id>bintray-3d-robotics-maven</id>
        <name>bintray-plugins</name>
        <url>http://dl.bintray.com/3d-robotics/maven</url>
    </pluginRepository>
</pluginRepositories>

实际上,有效的目标文件可以通过URL获得:

https://dl.bintray.com/3d-robotics/maven/com/o3dr/android/dronekit-android/2.9.0/

其中尊重存储库URL及其Maven坐标(groupId,artifactId,version)。


另请注意:不要重复使用存储库ID central ,除非出于特定原因,否则您将覆盖Maven构建的中央(默认)存储库,并且所有依赖项(和插件)仅由新推出的依赖项(和插件)获取。

sbt-android可以处理这个配置。

build.sbt

androidBuildJar 
name := "yourproject" 
organization := "yourorganization" 
platformTarget := "android-24"
libraryDependencies +="com.o3dr.android" % "dronekit-android" % "2.9.0"

项目/ plugins.sbt

addSbtPlugin("org.scala-android" % "sbt-android" % "1.6.7")

根据需要添加发布和解析器规则。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM