有没有办法我可以配置maven 总是下载源和javadocs?-DdownloadSources=true -DdownloadJavadocs=true每次指定(通常伴随着运行mvn编译两次因为我第一次忘记)变得相当乏味.
我试图了解Gradle Wrapper的工作原理.在许多源代码库中,我看到以下结构:
projectRoot/
src/
build.gradle
gradle.properties
settings.gradle
gradlew
gradlew.bat
gradle/
wrapper/
gradle-wrapper.jar
gradle-wrapper.properties
Run Code Online (Sandbox Code Playgroud)
我的问题:
gradlew/ gradlew.bat?您是否应该在项目首次创建时仅生成一次,每次提交/推送更改时是否生成它们?它们是如何产生的?gradle/wrapper/*文件(gradle-wrapper.jar和gradle-wrapper.properties)?*.gradle在项目gradle目录中看到其他文件.这些额外的Gradle文件是什么?它们代表什么/做什么?自定义插件?settings.gradle与内部应该定义的属性有什么不同gradle.properties?源代码在Gradle缓存中下载,源文件的类路径条目看起来没问题,但Eclipse不显示第三方库的源文件.
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="output" path="bin/main"/>
<classpathentry kind="src" path="src/main/java"/>
<classpathentry kind="src" path="src/main/resources"/>
<classpathentry output="bin/test" kind="src" path="src/test/java"/>
<classpathentry output="bin/test" kind="src" path="src/test/resources"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER" exported="true"/>
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container" exported="true"/>
<classpathentry sourcepath="D:/Users/SSchneider/.gradle/caches/artifacts-14/filestore/org.springframework/spring-webmvc/3.1.2.RELEASE/source/bc9c347358c5d59998b27e8a13c75106c3d0696/spring-webmvc-3.1.2.RELEASE-sources.jar" kind="lib" path="D:/Users/SSchneider/.gradle/caches/artifacts-14/filestore/org.springframework/spring-webmvc/3.1.2.RELEASE/jar/e02f3e5aa91c8caa37b2e9b780229d27e76c0f2e/spring-webmvc-3.1.2.RELEASE.jar" exported="true">
<attributes>
<attribute name="org.eclipse.jst.component.nondependency" value=""/>
</attributes>
</classpathentry>
<classpathentry sourcepath="D:/Users/SSchneider/.gradle/caches/artifacts-14/filestore/org.springframework.data/spring-data-jpa/1.2.0.BUILD-SNAPSHOT/source/19e4dedbb956cdc3bb1d34d61a351229b653029a/spring-data-jpa-1.2.0.BUILD-SNAPSHOT-sources.jar" kind="lib" path="D:/Users/SSchneider/.gradle/caches/artifacts-14/filestore/org.springframework.data/spring-data-jpa/1.2.0.BUILD-SNAPSHOT/jar/2a3cfc2ea0b2c8d87f32166e16bb56e1f092568b/spring-data-jpa-1.2.0.BUILD-SNAPSHOT.jar" exported="true">
<attributes>
<attribute name="org.eclipse.jst.component.nondependency" value=""/>
</attributes>
</classpathentry>
<classpathentry sourcepath="D:/Users/SSchneider/.gradle/caches/artifacts-14/filestore/org.springframework.security/spring-security-web/3.1.2.RELEASE/source/49e8d929d835d4ba4556ba9d138488ecc083a794/spring-security-web-3.1.2.RELEASE-sources.jar" kind="lib" path="D:/Users/SSchneider/.gradle/caches/artifacts-14/filestore/org.springframework.security/spring-security-web/3.1.2.RELEASE/jar/e43e7683289f08c1e073564a94e6f26298ec4f59/spring-security-web-3.1.2.RELEASE.jar" exported="true">
<attributes>
<attribute name="org.eclipse.jst.component.nondependency" value=""/>
</attributes>
</classpathentry>
<classpathentry sourcepath="D:/Users/SSchneider/.gradle/caches/artifacts-14/filestore/javax.validation/validation-api/1.0.0.GA/source/7a561191db2203550fbfa40d534d4997624cd369/validation-api-1.0.0.GA-sources.jar" kind="lib" path="D:/Users/SSchneider/.gradle/caches/artifacts-14/filestore/javax.validation/validation-api/1.0.0.GA/jar/b6bd7f9d78f6fdaa3c37dae18a4bd298915f328e/validation-api-1.0.0.GA.jar" exported="true">
<attributes>
<attribute name="org.eclipse.jst.component.nondependency" value=""/>
</attributes>
</classpathentry>
</classpath>
Run Code Online (Sandbox Code Playgroud) *.jar我的Gradle/Buildship项目中有一个文件位于一个lib文件夹中.我把它包含在我的build.gradle通道中:
compile files('libs/local-lib.jar')
我还有一个相应的local-lib-sources.jar文件,我想附加到它.在Eclipse中,对于手动管理的依赖项,这可以通过构建路径条目->属性->Java源附件的上下文菜单来工作.但是,对于gradle-managed依赖项,该选项不可用.
有没有人知道gradle/buildship这样做的方式是什么样的?我的依赖是没有存储库,所以我现在一直坚持compile files.
我正在使用gradle(v1.9)和IntelliJIdea(v12.1.6).我有一个简单的java项目和一个build.gradle文件.一个依赖关系不在maven central上,所以我把jar放在了lib文件夹中.
对于maven central上的依赖项,gradle使用javadoc和source(位于$ project/.idea/libraries)中正确构建库xml文件.对于本地依赖项(JNativeHook),不附加此类源或javadoc.作为比较,两个xml文件:
使用source和javadoc附件
<component name="libraryTable">
<library name="jackson-core-2.2.3">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-core/2.2.3/1a0113da2cab5f4c216b4e5e7c1dbfaa67087e14/jackson-core-2.2.3.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-core/2.2.3/6021971970a43ae0c22f378cfb5813af869caab/jackson-core-2.2.3-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-core/2.2.3/b1c4a6c3c26dfc425efd53c00217868b60d07de9/jackson-core-2.2.3-sources.jar!/" />
</SOURCES>
</library>
</component>
Run Code Online (Sandbox Code Playgroud)
没有源和javadoc附件
<component name="libraryTable">
<library name="JNativeHook-1.1.4">
<CLASSES>
<root url="jar://$PROJECT_DIR$/lib/JNativeHook-1.1.4.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>
Run Code Online (Sandbox Code Playgroud)
构建文件如下所示:
apply plugin: 'java'
apply plugin: 'idea'
idea {
module {
downloadJavadoc = true
downloadSources = true
}
}
repositories {
mavenCentral()
flatDir(dirs: 'lib')
}
dependencies {
// Will be fetched …Run Code Online (Sandbox Code Playgroud) 我们希望有一个执行"svn update"的脚本,如果depedency.gradle文件在更新列表中,我们希望运行一个只更新依赖关系的任务,以便开发人员机器是最新的.那项任务是什么?在运行"gradle任务"时我没有看到它.寻找updatejars或其他东西.
当我们构建项目时,我们不希望它检查jar更新!大多数是因为只需要在上面排名第一的2种情况下以及有人正在更新dependency.gradle文件时.第二件事,一旦我知道问题#1的答案,他们就可以运行"gradle updatejars".
有任何想法吗?我刚刚进入gradle,我们真的希望保持一致的环境,当我们运行更新脚本时,它会在一次原子扫描中获取源代码和jar,我们不再需要检查每个构建的存储库.
如果可能的话,通过更改build.gradle文件知道如何做到这将是很好的.如果没有,是否有命令行选项?(显然的build.gradle会给我一个命令行选项,这就是为什么我喜欢,我可以说,编译不依赖于下载罐子该方法).