小编mar*_*cht的帖子

Docker缓存gradle依赖项

我正在尝试使用docker将我们的java web应用程序部署到aws弹性beanstalk,其想法是能够在本地运行容器以进行开发和测试,并最终使用git将其推送到生产环境.

我已经创建了一个安装了tomcat8和java8的基本映像,执行gradle构建的映像继承了这个基本映像,从而加快了构建过程.

一切都运行良好,除了使用docker构建的继承应用程序容器似乎不缓存gradle依赖项,它每次都下载它,包括gradlew.我们使用以下命令构建Web应用程序:

./gradlew war

有没有办法可以缓存文件,~/.gradle这会大大加快我的建立速度.

这不是beanstalk上的一个问题,但对于尝试在本地构建和运行的开发人员来说这是一个大问题,因为这需要花费很多时间,正如您可以想象的那样.

基本映像dockerfile:

FROM phusion/baseimage
EXPOSE 8080
RUN apt-get update
RUN add-apt-repository ppa:webupd8team/java
RUN apt-get update
RUN echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | sudo /usr/bin/debconf-set-selections
RUN apt-get -y install oracle-java8-installer
RUN java -version
ENV TOMCAT_VERSION 8.0.9
RUN wget --quiet --no-cookies http://archive.apache.org/dist/tomcat/tomcat-8/v${TOMCAT_VERSION}/bin/apache-tomcat-${TOMCAT_VERSION}.tar.gz -O /tmp/catalina.tar.gz
# Unpack
RUN tar xzf /tmp/catalina.tar.gz -C /opt
RUN mv /opt/apache-tomcat-${TOMCAT_VERSION} /opt/tomcat
RUN ln -s /opt/tomcat/logs /var/log/tomcat
RUN rm /tmp/catalina.tar.gz
# Remove unneeded apps
RUN rm -rf /opt/tomcat/webapps/examples
RUN …
Run Code Online (Sandbox Code Playgroud)

java docker gradlew amazon-elastic-beanstalk

29
推荐指数
3
解决办法
2万
查看次数

IntelliJ 14.1以xml记录输出

我们使用slf4j和logback,当从命令行运行时,它仍然按预期工作,但在intellij中它是不同的.

在intellij中使用gradle运行junit测试,日志输出采用以下xml格式:

<ijLog><event type='afterSuite'><ijLogEol/>
  <test id='root' parentId=''><ijLogEol/>
    <descriptor name='Test Run' className='' /><ijLogEol/>
    <result resultType='SUCCESS' startTime='1427264227574' endTime='1427264315052'><ijLogEol/>
      <failureType>error</failureType><ijLogEol/>
    </result><ijLogEol/>
  </test><ijLogEol/>
</event></ijLog>
Run Code Online (Sandbox Code Playgroud)

我不希望IDE改变任何东西,只需使用我们提供的日志记录.这种用法很好,但自14.1以来我就遇到了这个问题.

java intellij-idea logback slf4j gradle

20
推荐指数
3
解决办法
1859
查看次数

android studio不下载源代码和javadoc

使用Android工作室版本0.1.3和android gradle插件的0.4.2版本.我注意到它没有为我的任何依赖项提供源代码.我之前在eclipse上使用了第三方android插件,并且通常使用maven你也可以配置它来执行此操作.任何人都知道如何启用Android插件或Android工作室来获取工件的源和javadoc?

我遇到的另一个问题是我为这样的提供范围创建了一个配置

configurations {
    provided
}

android.applicationVariants.each { variant ->
    variant.javaCompile.classpath += configurations.provided
}
Run Code Online (Sandbox Code Playgroud)

哪个在gradle中完美运行,但android studio不会将其添加到其类路径中.有谁知道怎么解决这个问题?我试过像这样的想法gradle插件

idea {
    module {
        downloadJavadoc = true
        downloadSources = true

        scopes.PROVIDED.plus += configurations.provided
    }
}
Run Code Online (Sandbox Code Playgroud)

但是在尝试修改范围时没有java插件它不起作用.此外,下载javadoc和源代码的设置也不起作用

我真的很失望android工作室和新的gradle构建系统如何组合在一起,真的想切换但是按照这个速度它只是不现实

android intellij-idea gradle android-studio

14
推荐指数
1
解决办法
1920
查看次数

Gradle配置在新的Android Build System中无法正常工作

环境配置

  • com.android.tools.build:gradle:0.4
  • gradle版本1.6
  • jdk 1.6(OSX)
  • android构建工具版本17
  • 编译sdk版本17

我似乎遇到的问题是我似乎无法将lombok排除在apk之外.我尝试通过创建这样的提供配置来实现:

configurations {
   provided
}

sourceSets {
   main { compileClasspath += configurations.provided }
}
Run Code Online (Sandbox Code Playgroud)

然后像这样添加依赖项:

dependencies {
     provided ‘org.projectlombok:lombok:0.11.8?
}
Run Code Online (Sandbox Code Playgroud)

但我仍然收到这个错误:

Error: duplicate files during packaging of APK <myapp>.apk
Path in archive: LICENSE
Origin 1: /<home>/.gradle/caches/artifacts-24/filestore/org.projectlombok/lombok/0.11.8/jar/e43ce2be16d8990568a4182c0bf996ad3ff0ba42/lombok-0.11.8.jar
Origin 2: /<home>/.gradle/caches/artifacts-24/filestore/org.sonatype.sisu.inject/cglib/2.2.1-v20090111/jar/7ce5e983fd0e6c78346f4c9cbfa39d83049dda2/cglib-2.2.1-v20090111.jar
:packageRelease FAILED
Run Code Online (Sandbox Code Playgroud)

我尝试过使用lombok-api.jar,然后在执行dex时会导致一些关于AccessLevel注释的问题.

这表明它包括lombok jar文件到apk.这不应该发生,有什么建议吗?

android gradle build.gradle

7
推荐指数
1
解决办法
1693
查看次数