我的工程gradle引入外部第三方工程代码

本文详细介绍了如何在Gradle工程中引入并管理外部的第三方工程代码,包括设置文件如`setting.gradle`、各模块的`build.gradle`配置以及`gradle-wrapper.properties`的正确写法,旨在帮助开发者理解如何在自己的项目中正确集成和构建依赖。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我的工程setting.gradle

include 'desktop', 'android', 'ios', 'core'
include 'lib_core'
project(':lib_core').projectDir = new File(settingsDir, "../../df_lib_x/lib_core")
include 'lib_android'
project(':lib_android').projectDir = new File(settingsDir, "../../df_lib_x/lib_android")
includeFlat 'dy_cike_xcf', 'dy_cike_cocostudio'
 

我的工程根目录build.gradle

buildscript {
    repositories {
        mavenLocal()
//        mavenCentral()
        maven { url "http://repo2.maven.org/maven2/" }
        maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.5.0'
        classpath 'org.robovm:robovm-gradle-plugin:1.12.0'
    }
}

allprojects {
    apply plugin: "eclipse"
    apply plugin: "idea"

    version = '1.0'
    ext {
        appName = "dy_cike_cikechuanshuo_init_init"
        gdxVersion = '1.8.0'
        roboVMVersion = '1.12.0'
        box2DLightsVersion = '1.4'
        ashleyVersion = '1.7.0'
        aiVersion = '1.7.0'
    }

    repositories {
        mavenLocal()
//        mavenCentral()

        maven { url "http://repo2.maven.org/maven2/" }
        maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
        maven { url "https://oss.sonatype.org/content/repositories/releases/" }
    }
}


project(":desktop") {
    apply plugin: "java"

    dependencies {
        compile project(":core")
        compile "com.badlogicgames.gdx:gdx-backend-lwjgl:$gdxVersion"
        compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"
        compile "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-desktop"
        compile "com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-desktop"
        compile "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-desktop"
        compile "com.badlogicgames.gdx:gdx-tools:$gdxVersion"
    }
}

project(":android") {
    apply plugin: "android"

    configurations { natives }

    dependencies {
        compile project(":core")
        compile "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion"
        natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi"
        natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi-v7a"
        natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86"
        compile "com.badlogicgames.gdx:gdx-box2d:$gdxVersion"
        natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi"
        natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi-v7a"
        natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-x86"
        compile "com.badlogicgames.gdx:gdx-bullet:$gdxVersion"
        natives "com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-armeabi"
        natives "com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-armeabi-v7a"
        natives "com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-x86"
        compile "com.badlogicgames.gdx:gdx-freetype:$gdxVersion"
        natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-armeabi"
        natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-armeabi-v7a"
        natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86"
        compile "com.badlogicgames.box2dlights:box2dlights:$box2DLightsVersion"
    }
}

project(":ios") {
    apply plugin: "java"
    apply plugin: "robovm"

    dependencies {
        compile project(":core")
        compile "org.robovm:robovm-rt:$roboVMVersion"
        compile "org.robovm:robovm-cocoatouch:$roboVMVersion"
        compile "com.badlogicgames.gdx:gdx-backend-robovm:$gdxVersion"
        compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-ios"
        compile "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-ios"
        compile "com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-ios"
        compile "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-ios"
    }
}

project(":core") {
    apply plugin: "java"

    dependencies {
        compile "com.badlogicgames.gdx:gdx:$gdxVersion"
        compile "com.badlogicgames.gdx:gdx-box2d:$gdxVersion"
        compile "com.badlogicgames.gdx:gdx-bullet:$gdxVersion"
        compile "com.badlogicgames.gdx:gdx-freetype:$gdxVersion"
        compile "com.badlogicgames.box2dlights:box2dlights:$box2DLightsVersion"
        compile fileTree(dir: 'libs', include: '*.jar')
    }
}

tasks.eclipse.doLast {
    delete ".project"
}

我的工程core模块build.gradle

apply plugin: "java"
sourceCompatibility = 1.6
[compileJava, compileTestJava]*.options*.encoding = 'GBK'
sourceSets.main.java.srcDirs = ["src/"]
eclipse.project {
    name = appName + "-core"
}

dependencies {
    compile project(':lib_core')
}
我的工程android模块build.gradle

apply plugin: "java"
sourceCompatibility = 1.6
[compileJava, compileTestJava]*.options*.encoding = 'GBK'
sourceSets.main.java.srcDirs = ["src/"]
eclipse.project {
    name = appName + "-core"
}

dependencies {
    compile project(':lib_core')
}

我的工程desktop模块build.gradle

apply plugin: "java"

sourceCompatibility = 1.6
[compileJava, compileTestJava]*.options*.encoding = 'GBK'

sourceSets.main.java.srcDirs = ["src/"]

project.ext.mainClassName = "sample.DesktopApp"
project.ext.assetsDir = new File("../android/assets");

task run(dependsOn: classes, type: JavaExec) {
    main = project.mainClassName
    classpath = sourceSets.main.runtimeClasspath
    standardInput = System.in
    workingDir = project.assetsDir
    ignoreExitValue = true
}

task testApp(dependsOn: classes, type: JavaExec) {

    project.ext.mainClassName = "sample.TestApp"
    classpath = sourceSets.main.runtimeClasspath
    main = project.mainClassName
    standardInput = System.in
    workingDir = project.assetsDir
    ignoreExitValue = true
}

task testBlackEdges(dependsOn: classes, type: JavaExec) {

    project.ext.mainClassName = "sample.test.blackedge.TestBlackEdgesApp"
    classpath = sourceSets.main.runtimeClasspath
    main = project.mainClassName
    standardInput = System.in
    workingDir = project.assetsDir
    ignoreExitValue = true
}

task dist(type: Jar) {
    project.ext.mainClassName = "sample.DesktopApp"
    from files(sourceSets.main.output.classesDir)
    from files(sourceSets.main.output.resourcesDir)

    from { configurations.compile.collect { zipTree(it) } }
    from files(project.assetsDir);


    manifest {
        attributes 'Main-Class': project.mainClassName
    }
}

dist.dependsOn classes

task distToolPreloadResources(type: Jar) {
    from files(sourceSets.main.output.classesDir)
    from files(sourceSets.main.output.resourcesDir)
    from { configurations.compile.collect { zipTree(it) } }
    from files(project.assetsDir);

    doLast {

        def getSrcPath = {
            def srcSb = new StringBuffer("")
            srcSb.append(destinationDir).append(File.separator).append(archiveName)
            return srcSb.toString()
        }

        def getDstPath = {
            String parent = destinationDir.getPath();
            String path = String.join(File.separator, parent, "..", "..", "..", "tool", "preload_resources.jar")
            print("distToolPreloadResources dst path = " + path + "\n");
            return path
        }

        File f = file(getSrcPath())
        File to = file(getDstPath())
        f.renameTo(to)
    }

    manifest {
        attributes 'Main-Class': "dy.tools.ToolPreLoadResourcesApp"
    }
}

distToolPreloadResources.dependsOn classes

task distToolSkeletonResources(type: Jar) {
    from files(sourceSets.main.output.classesDir)
    from files(sourceSets.main.output.resourcesDir)
    from { configurations.compile.collect { zipTree(it) } }
    from files(project.assetsDir);

    doLast {
        def getSrcPath = {
            def srcSb = new StringBuffer("")
            srcSb.append(destinationDir).append(File.separator).append(archiveName)
            return srcSb.toString()
        }

        def getDstPath = {
            String parent = destinationDir.getPath();
            String path = String.join(File.separator, parent, "..", "..", "..", "tool", "skeleton_resources.jar")

            print("distToolSkeletonResources dst path = " + path + "\n");
            return path
        }

        File f = file(getSrcPath())
        File to = file(getDstPath())
        f.renameTo(to)
    }

    manifest {
        attributes 'Main-Class': "dy.tools.ToolSkeletonResourcesApp"
    }
}

distToolSkeletonResources.dependsOn classes

eclipse {
    project {
        name = appName + "-desktop"
        linkedResource name: 'assets', type: '2', location: 'PARENT-1-PROJECT_LOC/android/assets'
    }
}

task afterEclipseImport(description: "Post processing after project generation", group: "IDE") {
    doLast {
        def classpath = new XmlParser().parse(file(".classpath"))
        new Node(classpath, "classpathentry", [kind: 'src', path: 'assets']);
        def writer = new FileWriter(file(".classpath"))
        def printer = new XmlNodePrinter(new PrintWriter(writer))
        printer.setPreserveWhitespace(true)
        printer.print(classpath)
    }
}


df_lib_x库setting.gradle

rootProject.name = 'df_lib_x'
include 'lib_core','lib_android'

df_lib_x库根build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        mavenLocal()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.5.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

df_lib_x库lib_core模块build.gradle

version 'unspecified'
apply plugin: 'java'
sourceCompatibility = 1.5
repositories {
    mavenCentral()
}
sourceSets {
    main {
        java.srcDir('src')
    }
}
task xx() {
    print("......")
}
dependencies {
    compile files('libs_gdx/gdx-1.8.0.jar')
    compile files('libs_andeng/andengine.jar')
}
df_lib_x库lib_android模块build.gradle

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.1.1'
    }
}
apply plugin: 'com.android.library'


android {
    lintOptions {
        abortOnError false
    }
}

repositories {
    jcenter()
}

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }

    compileOptions {
        encoding 'GBK'
        sourceCompatibility JavaVersion.VERSION_1_6
        targetCompatibility JavaVersion.VERSION_1_6
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    provided fileTree(include: ['*.jar'], dir: 'libs_andeng')
    provided fileTree(include: ['*.jar'], dir: 'libs_cmcc_runtime')
    provided fileTree(include: ['*.jar'], dir: 'libs_cmcc_Unity3D')
    provided fileTree(include: ['*.jar'], dir: 'libs_gdx')
    provided fileTree(include: ['*.jar'], dir: 'libs_other')
    provided fileTree(include: ['*.jar'], dir: 'libs_xudx')
    provided fileTree(include: ['*.jar'], dir: 'libs_ydmm')
    compile 'com.android.support:appcompat-v7:23.2.0'
    compile project(':lib_core')
}

task lib_android_x() {
    print('xxxxxxx')
}


gradle-wrapper.properties写法

#Sat Sep 21 13:08:26 CEST 2013
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
#distributionUrl=http\://services.gradle.org/distributions/gradle-2.10-all.zip
#distributionUrl=file\:/home/andrew/program/gradle/gradle-2.10-all.zip
distributionUrl=file:///d:/program/gradle/gradle-2.10-all.zip

local.properties写法

sdk.dir=D\:/program/android/android-sdk-windows_r06.setup






### 导入Java第三方库到VSCode 对于希望在Visual Studio Code (VSCode)环境中开发Java项目的开发者来说,正确配置并导入第三方库是至关重要的。这不仅简化了依赖管理过程,还提高了代码重用性和模块化程度。 #### 安装必要的扩展 为了支持Java项目,在VSCode中安装官方提供的“Java Extension Pack”是非常推荐的做法[^1]。该插件包包含了构建、运行以及调试Java应用程序所需的各种工具和服务。 #### 使用Maven或Gradle管理依赖项 现代Java项目通常采用自动化构建工具来处理外部库的引入。通过编辑`pom.xml`(针对Maven)或者`build.gradle`(面向Gradle),可以轻松声明所需的第三方库版本号。一旦定义好这些信息,只需执行相应的命令即可自动下载并集成所选组件至工作区中。 例如,当利用Maven作为构建工具时,可以在`pom.xml`文件内添加如下片段以加入Apache Commons Lang库: ```xml <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.12.0</version> </dependency> ``` 而对于选择Gradle的同学,则应在`build.gradle`里写入相似的内容: ```groovy implementation 'org.apache.commons:commons-lang3:3.12.0' ``` 完成上述操作之后,刷新项目结构或是重新加载IDE窗口就能使更改生效。 #### 手动添加JAR文件 如果遇到某些特殊情况下无法借助于Maven/Gradle获取特定jar包的情况,也可以采取手动方式将其放置于工程目录下,并告知编译器路径位置。具体做法是在`.classpath`文件中增加相应条目指向本地存储的.jar文件;不过这种方法相对繁琐且不利于团队协作下的版本控制。 #### 验证设置成功与否 最后一步是要确认所有已添加的类库都能被正常识别和解析。可以通过尝试编写一段简单的测试程序调用其中的方法来进行验证。假如一切顺利的话,应该不会碰到任何关于找不到符号之类的错误提示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值