使用flatDir repo时附加的gradle配置中断编译

时间:2017-10-26 09:55:43

标签: java gradle

我使用Gradle - extract file from depended jar的方法从原生JAR中取出.so文件。

configurations {
    special
}

dependencies {
    special('org.jogamp.jogl:jogl-all:2.3.2:natives-linux-i586')
}

task extract(type: Copy) {
    from({ zipTree(configurations.special.singleFile) })
    include 'natives/linux-i586/*.so'
    into "$buildDir/extracted"
}

这样可以正常工作,但它似乎会破坏依赖于org.jogamp.jogl:jogl-all:2.3.2(非本机Java部分)的代码编译。

TestJogl.java:1: error: package com.jogamp.opengl does not exist
import com.jogamp.opengl.GL;

如果项目是使用clean extract build而不是clean build

构建的,则编译将失败

我已将代码简化为

import com.jogamp.opengl.GL;

public class TestJogl {
    private GL gl;
}

和相应的build.gradle

apply plugin: "java"

dependencies {
    compile "org.jogamp.jogl:jogl-all:2.3.2"
}

我已将此问题与使用" flatDir"回购。使用mavenCentral()时,完全相同的项目编译正常。请注意使用传统企业网络,无需人工或直接访问Internet。

allprojects {
    repositories {
        flatDir {
           dirs "$rootProject.projectDir/local-repo"
           // contains jogl-all-2.3.2-natives-linux-i586.jar
           //          jogl-all-2.3.2.jar
        }
    }
}

我设法通过将依赖项更改为明确指定@jar来解决此问题,这应该是隐式的

compile "org.jogamp.jogl:jogl-all:2.3.2@jar"

单项目和多项目布局都会出现同样的问题。

我的分析:这是Gradle中的一个错误。不知何故,使用flatDir Gradle时会感到困惑并认为已经设置了依赖关系,但是使用了原生JAR而不是Java JAR。

问题:我做错了吗?这是一个错误吗?还有其他方法可以解决它吗?

环境:Gradle 3.5,JDK 1.8u144

0 个答案:

没有答案