GVKun编程网logo

AspectJ + Gradle配置(gradle classpath配置)

8

在本文中,我们将带你了解AspectJ+Gradle配置在这篇文章中,我们将为您详细介绍AspectJ+Gradle配置的方方面面,并解答gradleclasspath配置常见的疑惑,同时我们还将给您

在本文中,我们将带你了解AspectJ + Gradle配置在这篇文章中,我们将为您详细介绍AspectJ + Gradle配置的方方面面,并解答gradle classpath配置常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的(简&繁)Gradle配置文件--简、android gradle // noinspection GradleCompatible、Android gradle使用 build.gradle配置、Android studio Gradle配置通用配置

本文目录一览:

AspectJ + Gradle配置(gradle classpath配置)

AspectJ + Gradle配置(gradle classpath配置)

我想在Gradle项目中使用AspectJ(这不是Android项目,只是一个简单的Java应用程序)。

这是我的build.gradle的样子:

apply plugin: ''java''buildscript {    repositories {        maven {            url "https://maven.eveoh.nl/content/repositories/releases"        }    }    dependencies {        classpath "nl.eveoh:gradle-aspectj:1.6"    }}repositories {    mavenCentral()}project.ext {    aspectjVersion = "1.8.2"}apply plugin: ''aspectj''dependencies {    //aspectj dependencies    aspectpath "org.aspectj:aspectjtools:${aspectjVersion}"    compile "org.aspectj:aspectjrt:${aspectjVersion}"}

代码可以编译,但是该方面似乎没有被编织。有什么事吗

答案1

小编典典

我已经为此苦苦挣扎了一段时间,所以这个配置我使用并且效果很好。

在您的配置中执行此操作。

configurations {    ajc    aspects    aspectCompile    compile{        extendsFrom aspects    }}

在依赖项中,使用以下配置。如果您不使用spring fwk,则不需要Spring依赖项。

dependencies {    //Dependencies required for aspect compilation    ajc "org.aspectj:aspectjtools:$aspectjVersion"    aspects "org.springframework:spring-aspects:$springVersion"    aspectCompile  "org.springframework:spring-tx:$springVersion"    aspectCompile  "org.springframework:spring-orm:$springVersion"    aspectCompile  "org.hibernate.javax.persistence:hibernate-jpa-2.1-api:$hibernateJpaVersion"}compileJava {    sourceCompatibility="1.7"    targetCompatibility="1.7"    //The following two lines are useful if you have queryDSL if not ignore    dependsOn generateQueryDSL    source generateQueryDSL.destinationDir    dependsOn configurations.ajc.getTaskDependencyFromProjectDependency(true, "compileJava")    doLast{        ant.taskdef( resource:"org/aspectj/tools/ant/taskdefs/aspectjTaskdefs.properties", classpath: configurations.ajc.asPath)        ant.iajc(source:"1.7", target:"1.7", destDir:sourceSets.main.output.classesDir.absolutePath, maxmem:"512m", fork:"true",                aspectPath:configurations.aspects.asPath,                sourceRootCopyFilter:"**/.svn/*,**/*.java",classpath:configurations.compile.asPath){            sourceroots{                sourceSets.main.java.srcDirs.each{                    pathelement(location:it.absolutePath)                }            }        }    }}

我不使用使用ant和Aspectj编译器的插件来执行此操作,可能会有一种简单的方法

(简&繁)Gradle配置文件--简

(简&繁)Gradle配置文件--简

标签: Gradle

[TOC]

Gradle功能很强大,也非常的灵活,但是我学习了很多资料之后发现,对于开发人员来说,很多内容并非我必须要了解的,虽然技多不压身,但是暂时用不到的知识遗忘速度也是飞快的,还是先解决最主要的问题,用Gradle来代替Maven管理自己的java项目。 使用Gradle管理项目的最主要的是学会Gradle的配置文件编写,接下来将自己对于Gradle配置文件的理解记录下来备查。

配置文件分类

配置文件分为三种

  1. build.gradle 主要配置文件,关于项目的依赖关系主要在该文件中配置
  2. settings.gradle 项目信息文件,项目的一些可在这里配置,比如项目名称、子项目信息
  3. xxxxx.gradle 模块配置文件,可将冗长的配置信息分块进行配置,比如依赖的版本统一管理等

配置项类举

build.gradle

1、 buildscript

作用:gradle的自身的资源配置,比如仓库信息、依赖信息、插件信息等 Tips:该配置项应放在配置文件的最开头位置

buildscript {
	repositories {
		maven { name "Alibaba" ; url ''https://maven.aliyun.com/repository/public'' }
		maven { name "Bstek" ; url ''http://nexus.bsdn.org/content/groups/public/'' }
		maven { name "M2" ; url ''https://plugins.gradle.org/m2/'' }
	}
}

2、 plugins

作用:插件集合配置 Tip:该配置项位置应放在除buildscript配置之外的所有配置项的前面

plugins {
	id ''org.springframework.boot'' version ''2.1.3.RELEASE''
	id ''java''
}

3、apply

作用:包含配置插件、引用其他配置文件 Tips:该配置项位置应放在除buildscript、plugins配置之外的所有配置项的前面,没有plugins则保证在buildscript之后

//配置插件
apply plugin: ''io.spring.dependency-management''
//引用配置文件
apply from: ''config.gradle''

4、allprojects

作用:多模块项目结构中对子模块的相同配置集中配置,包括repositories、dependencies等

allprojects {
    repositories {
        maven { name "M2" ; url ''https://plugins.gradle.org/m2/''
    }
    
    dependencies {
        compileClasspath ''org.springframework.boot:spring-boot-starter-web''
	    testImplementation ''org.springframework.boot:spring-boot-starter-test''
    }
}

另外还有subprojects也是配置多模块项目的关键配置,两者的区别是allprojects是包括rootProject的subprojects是不包括rootProject的,task遍历顺序为allprojects > subprojects > Child Project

5、repositories

作用:配置依赖仓库信息,常用阿里云的仓库,直接复制示例代码即可

repositories {
	mavenLocal()
	maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" }
	maven { name "Bstek" ; url "http://nexus.bsdn.org/content/groups/public/" }
}

6、dependencies

作用:依赖包的配置 依赖方式:在2.x版本和3.0以后的版本更换了关键字 | 2.x | 3.0 OR later | 描述 | | -------- | ----- | :---- | | | compile | implementation,api |编译以及运行时都需要| | provided | compileOnly、[ compileClasspath ] |仅编译需要| | apk | runtimeOnly |仅运行时需要| | testCompile| testImplementation | 测试编译时使用 | Tips:常用的就是implementation、testCompile 和 compileOnly. 网上很多说implemention是隐藏内部引用的作用,但是不必深究,用就可以了,出现问题再来解决,多数情况下是不会遇到问题的

冲突处理:

  • exclude 作用:排除依赖

   //单独排除某个模块中的依赖  
   compile(''com.h6ah4i.android.widget.advrecyclerview:advrecyclerview:0.11.0@aar'') {
       exclude group: ''com.android.support''
   }
   // 排除所有子依赖中的support依赖
   configurations {
      all*.exclude group: ''com.android.support''
   }
  • transitive 作用:配置依赖传递
//依赖同于没有使用 exclude 排除依赖 ,每个包的依赖项都会被递归分析并添加进来。
transitive = true
//则依赖关系同于用 exclude 排除依赖。
transitive = false
  • force 作用:强制版本
// 强制使用 support-v4 26.1.0版本
compile(''com.android.support:support-v4:26.1.0'') {
   force = true
}

7、task配置

作用:配置自定义任务,例如编译任务,将依赖、资源文件与项目分离 Tips:这块内容较为复杂,单独主题进行分析

8、定制项目

sourceCompatibility = 1.8 version = ''1.0''

settings.gradle

1、pluginManagement(非必需)

作用:插件库管理 Tips:放在配置文件最前端

pluginManagement {
	repositories {
	    //这个就是默认的插件库,一般可不配置,除非有更好更快的插件库
		gradlePluginPortal()
	}
}

2、settingsEvaluated(非必需)

作用:settings.gradle初始化完成的回调函数,用于做些初始化工作

gradle.settingsEvaluated {
    println "settings初始化完成"
}

3、projectsLoaded(非必需)

作用:所有项目载入完成回调函数

gradle.projectsLoaded {
    Gradle gradle ->
        println "子项目初始化完成"+gradle
}

4、自定义初始化方法(非必需)

//创建自定义方法
def customInit(){
	println"start init"
	//做自己想要做的初始化
  	println"end init"
}
//settings.gradle加载的时候,会执行这个方法
customInit()

5、rootProject.name(必需)

作用配置项目名称

rootProject.name = ''test-core''

6、include(重要)

作用:配置多个项目

include '':app'','':core''

android gradle // noinspection GradleCompatible

android gradle // noinspection GradleCompatible

在android gradle中它意味着什么.

添加// noinspection GradleCompatible解决了依赖项的冲突问题.

解决方法:

>您可以为gradle配置获取此警告,例如if
您的应用代码是混合库版本.
>这种情况的一个常见例子是Android支持
库.
>此外,如果您的项目中包含其他第三方库
使用不同的版本,也可以出现警告.
> Android Studio将显示错误消息的详细信息,然后通过将鼠标悬停在IDE中的红色警告行上来使用“GradleCompatible”进行抑制(请参见随附的屏幕截图).
>’// noinspection GradleCompatible’只是抑制警告.
基本上不要检查与Gradle兼容性的问题,如相关
到配置的下一行.

Example of GradleCompatible warning in Android Studio IDE

Android gradle使用 build.gradle配置

Android gradle使用 build.gradle配置

//设置脚本的运行环境

buildscript{

}

//支持java 依赖库管理(maven/ivy)

repositories{

}

//依赖的资源包配置

dependencies{

}

//声明构建的项目类型 

apply plugin:

//设置编译android项目的参数

android{
     comileSdkVersion //使用的sdk的API版本
     buildToolsVersion//构建工具的版本(build-tools)
     // 默认配置
     defaultConfig{
          minSdkVersion //最小支持sdk版本
          targetSdkVersion //编译时的目标sdk版本
          versionCode //程序版本号
          versionName //程序版本名称 
          applicationId//唯一标示
     }
     // 签名配置
     signingConfigs{
          //发布版签名配置
          release{
               storeFile //密钥文件路径
               storePassword //密钥文件密码
               keyAlias //key别名
               keyPassword //key密码
          }
     }
     //build类型
     buildTypes {
        //发布
        release {
            minifyEnabled //混淆(true/false)开启/关闭
            //指定混淆规则文件
            proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-project.txt''
            signingConfig //设置签名信息 例:signingConfigs.release
        }
    }
    //不同话定制
    productFlavors{
         flavors1{
              applicationId //唯一标示
              versionCode //程序版本号
              versionName //程序版本名称
              buildConfigField //自定义配置 例:"String","UWO_HTTP","http://www.uwo.com"
              manifestPlaceholders=[]//替换AndroidManifest.xml文件中的参数值
         }
    }
    //目录指向配置
    sourceSets{
         main {
            manifest.srcFile ''AndroidManifest.xml''//指定AndroidManifest文件
            java.srcDirs = [''src'']//指定source目录
            resources.srcDirs = [''src'']//指定source目录
            aidl.srcDirs = [''src'']//指定source目录
            renderscript.srcDirs = [''src'']//指定source目录
            res.srcDirs = [''res'']//指定资源目录
            assets.srcDirs = [''assets'']//指定assets目录
            jniLibs.srcDirs = [''libs'']//指定lib库目录
        }
        debug.setRoot(''build-types/debug'')//指定debug模式的路径
        release.setRoot(''build-types/release'')//指定release模式的路径
    }
}

 

Android studio Gradle配置通用配置

Android studio Gradle配置通用配置

 在使用Android studio  Android开发中Gradle通常会遇到很多相同的配置例如在不同的module中都要配置相同的compileSdkVersion、buildToolsVersion等

这时我们可以定义一个共享变量统一他们的配置,防止不同module因为配置不同而导致的一些兼容性问题,或一些其他bug

一、定义共享变量

在工程根目录创建一个名为common_config.gradle的文件

文件内容举例

project.ext{
    //java相关
    java_version=8
    java_max_heap_size=4G

    //JDK版本兼容
    source_compatibility = this.&getJavaVersion()
    target_compatibility = this.&getJavaVersion()

    //kotlin 版本‘
    kotlin_version = ''1.3.41''

    //Android编译相关版本
    compile_sdk_version =28
    build_tools_version =''28.0.3''
    min_sdk_version= 16
    target_sdk_version =29

    //混淆相关
    minify_enabled =false
}
def getJavaVersion(){
    switch (project.ext.java_version){

        case "6":
            return JavaVersion.VERSION_1_6
        case "7":
            return JavaVersion.VERSION_1_7
        case "8":
            return JavaVersion.VERSION_1_8
    }
}

二、引入通用配置

apply from:"${project.rootDir}/common_config.gradle"

示例:

buildscript {
    //引入通用配置
   apply from:"${project.rootDir}/common_config.gradle"

    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath ''com.android.tools.build:gradle:3.5.0''
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        //small 插件框架
     //   classpath ''net.wequick.tools.build:gradle-small:1.1.0-alpha2''
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files

    }

}
......

三、在Module中使用这个通用配置

示例:

  compileSdkVersion compile_sdk_version
    buildToolsVersion build_tools_version
    defaultConfig {
        applicationId "com.jelly.smalldemo"
        minSdkVersion minSdkVersion
        targetSdkVersion targetSdkVersion
        versionCode 1
        versionName "1.0.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        applicationIdSuffix =kotlin_version
    }
    buildTypes {
        release {
            minifyEnabled minify_enabled
            proguardFiles getDefaultProguardFile(''proguard-android-optimize.txt''), ''proguard-rules.pro''
        }
    }

 

今天关于AspectJ + Gradle配置gradle classpath配置的介绍到此结束,谢谢您的阅读,有关(简&繁)Gradle配置文件--简、android gradle // noinspection GradleCompatible、Android gradle使用 build.gradle配置、Android studio Gradle配置通用配置等更多相关知识的信息可以在本站进行查询。

本文标签: