Gradle Refresh异常: Could not HEAD

在idea中使用Gradle的时候遇到了一个奇怪的异常:获取公司内部repository中的包是正常的,但是获取jar源文件的时候却遇到了一些异常。

异常信息可以通过执行“Refresh All Gradle Projects”操作,在Gradle View中看到。

异常信息简略如下:

使用Gradle构建scala多模块工程

前段时间终于无法忍受sbt慢如龟速的编译打包速度了。稍稍调研了一下,就果断切换到了gradle。由于调研得比较匆忙,在使用过程中遇到了各种问题。好在最后都能解决了。

我这里使用scala主要是用来编写spark job。由于我自己的一些需要,这些job中有几个是多模块的。在这里简单解释一下如何使用gradle构建scala多模块项目。

这里用我最近开发的项目来做说…

理解AOP

说下我对AOP的理解:AOP是给程序添加统一功能的一种技术。在代码层面上来说,AOP就是在必要的业务代码中织入业务无关的、统一的代码的一种技术。在实现AOP的时候,通常努力争取的目标是对业务代码无侵入或是低侵入。

平时用得比较多的是Spring中的AOP实现,还有一些比如Spring中的shiro权限验证,@Cachable注解等在某种程度上也可以认为是AOP…

使用ThreadLocal

之前和同事讨论过一个日期格式化的问题,程序比较简单,大体是这样:

jar包中的jar

前两天在整理一个工程的时候突发奇想,能不能把需要的jar都打到一个类似于war包的jar包里面去,但是不解开原始jar包,而是将之统一放到外面jar包中的一个lib目录下。

按这个思路试了好几次,都遇到了NoClassDefFoundError。一开始以为是manifest中配置有误,在几次尝试调整manifest文件仍然失败之后,觉得有必要查看一些类似的案例…

Gradle中的“provided”

maven中值为provided的scope,可以让我们声明一个只在编译时使用的非传递性的依赖。在gradle中我们可以声明compileOnly依赖来实现类似的效果(需要java插件)。示例如下:

Gradle依赖排除

在引用依赖时经常会有这样的问题:某些间接引用的依赖项是不需要的;产生了依赖冲突。此时需要排除一些依赖。

下面的内容介绍了几种在gradle中排除依赖的方式。

在dependency中排除