
在项目中需要引入 dependency check 的工具来扫描相关依赖的库是否有安全漏洞等问题。由于是使用Gradle作为依赖构建工具,以及kotlin作为开发语言,所以选择了 owasp dependency check 的 Gradle 插件的方式。最后需要将报告上传到 sonar 进行展示。
在 build.gradle.kts 中添加相关的依赖:
在 sonar 的配置项中添加 dependency check 报告的路径:
在 sonar 中选择 Administration 的tab,进入 Marketplace 。在 Plugins 中搜索并安装如图的插件:
项目中使用了 Jenkins 作为CI构建工具,所以需要在其中添加一个 stage 用于将 dependency check report 上传到 sonar 中。如下:
由于 dependency check 并不是每次跑pipeline都需要,所以通过 timeout+input 的方式来手动run这一个stage。当跑完 ./gradlew dependencyCheckAnalyze 后就会生成相关的report文档,默认是html格式,可以通过配置修改。
当dependency check跑完之后,就应该执行 ./gradlew sonarqube 命令将本地report上传到sonarqube来分析。sonar的 host.url 和 login 参数既可以配置在sonar对应的properties,也可以在run命令的时候传入。这里是因为将 creds 配置到了Jenkins中,所以在Jenkins file中通过获取凭证的方式来配置。
当Jenkins CI跑完Sonar Analysis后,就可以去Sonar上查看对应的dependency check的report。如图
近期在项目中需要对网络访问接口进行jar封装。
在eclipse中进行指定类进行打jar包很简单,但是在android studio中则有点困难,其主要的原因是需要掌握gradle命令形式。接下来就直接上干货。
首先,在你需要进行分装jar的模块进行build.gradle文件下进行以下添加:
然后在Windos CMD中跳转到你的项目路径下,然后执行gradle makeJar命令,如果提示:gradle命令不可用。那么你需要在你的系统环境变量中进行变量的添加:
找到你的gradle插件路径进行添加,然后再在path属性的末尾进行
“%GRADLE_HOME%\bin”添加。
然后输入 "gradle -v"或者"gradle -version"都可以.
如图就说明gradle配置成功了。
然后再cmd命令到你的项目路径下,然后再次输入gradle makeJar回车,
这里提示我们在我需要进行jar分装的模块出错了, 我们按照错误提示进行修改 ,在buold.gradle文件中添加
lintOptions {
abortOnErrorfalse
}
然后点击Sync Now。再次运行gradle makeJar。然后再一长串的编译后在末尾看到
然后我们在项目模块的build/libs文件夹下看到了我们命名的.jar文件
OK,到此就结束了。上面是个简单的例子,只能打包某个包下面的所有文件,如果要实现只打某个包下面的某些子包或者文件可参考如下示例:
taskmakeSdkJar(type:org.gradle.api.tasks.bundling.Jar){
baseName'pluginsdk'
//只打包org.cmdmac下的org.cmdmac.pluginsdk.impl和org.cmdmac.gamecenter,其他子包不会被打包进去
from('build/intermediates/classes/debug/org/cmdmac/'){
include'pluginsdk/impl'
include'gamecenter'
}
into('org/cmdmac/')
// exclude('R.class')
// exclude{ it.name.startsWith('R$')}
taskmakeSdkJar(type:org.gradle.api.tasks.bundling.Jar){
baseName'pluginsdk'
//只打包org.cmdmac下的org.cmdmac.pluginsdk.impl和org.cmdmac.gamecenter,其他子包不会被打包进去
from('build/intermediates/classes/debug/org/cmdmac/'){
include'pluginsdk/impl'
include'gamecenter'
}
into('org/cmdmac/')
// exclude('R.class')
// exclude{ it.name.startsWith('R$')}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)