构建一个Java /Groovy项目,各种任务,如编译Java、编译Groovy、测试等,需要各种jar工件,如果您正确定义了该任务的每个区域所需的内容,Gradle会提供这些工件。
我将这些应用于构建脚本(build.gradle ),一切正常。
我正在处理的另一个项目不仅需要jar rtifacts,还需要一个.xml文件作为进行JIBX / XSLT转换/处理的工件。
我的简单问题: - Gradle 构建过程知道如何从 Artifactory 获取工件(正如我在 init.d/common.gradle 文件中提到的那些工件仓库),并且在构建过程中它会使用这些 jar 馈送编译/测试等任务,现在如果我也将这个.xml工件上传到 Artifactory,那么:
一个。如何在 build.gradle 中获取可用的.xml工件,以便我可以对其执行一些操作;例如:将该.xml文件复制到生成的项目的 jar/war 文件中的 x/y/z 文件夹中。我可以通过project.configuration.compile.each或.find或类似的东西访问那些jar文件,但我不确定我是否可以以相同的方式访问.xml文件。以下代码适用于在build/tmpJibx/文件夹中解开jar文件,即如果我在构建过程中需要httpunit-1.1.1.jar那么调用以下函数时,将在build/tmpJibx/httpunit文件夹中创建/取消jar这个jar。
// Unpack jar
def unpackJarItem( jarName ) {
println 'unpacking: ' + jarName
def dirName = "$buildDir/tmpJibx/$jarName"
new File( dirName ).mkdirs()
project.configurations.compile.find {
def nameJar = it.name
def iPos = nameJar.lastIndexOf( '-' )
if( iPos > 0 ) {
nameJar = nameJar.substring( 0, iPos )
if( nameJar == jarName ) {
def srcJar = it.toString()
ant {
unjar( src: "$srcJar", dest: "$dirName" )
}
}
}
}
}
Gradle 在其缓存中维护工件位于用户的 ~(主目录在 ~/.gradle 内)或 C:\Users\.gradle 的 ...\caches.\artifactory..\文件存储.........*
我所要做的就是:如果我能做到以下几点:
copy {
into "build/war/WEB-INF/conf"
from "......<THIS_PATH_IS_WHAT_Im_LOOKING_FOR>:
include "thatxmlartifactfile.xml"
}
我尝试在依赖项{…}部分下定义条目,如下所示,但我不确定Gradle是否会自动访问它,因为Gradle非常棒。
dependencies {
compile 'groupid:artifactid:x.x.x'
compile group: 'xxxx', artifac...: 'yyyy', version: 'x.x.x'
//for ex:
compile 'httpunit:httpunit:1.1.1'
jibxAnt 'groupidnameofxmlfile:artifactidnameofxmlfile:versionnumberofxml@xml"
...
...
....
}
似乎我必须首先从Gradle知道的某个位置可以使用的地方复制.xml,然后从该位置复制到我的目标文件夹。
// Add libraries for acceptance tests
project.configurations.acceptanceTestCompile.each { File f ->
if( f.isFile() ) {
def nameJar = f.getName()
def jarName = f.getName()
def fileInc = true
def iPos = nameJar.lastIndexOf( '-' )
if( iPos > -1 ) {
jarName = nameJar.substring( 0, iPos )
// Here I can say that one of the file/entry will be that .xml file
// Now I have that in jarName variable and I can play with it, right?
// i.e. if jarName == name of that xml file, then
copy {
into "some/folder/location"
from jarName
}
}
}
}
最简单的解决方案是将XML文件提交给源代码管理。如果您将它放在< code > src/main/WEB app/we b-INF/conf/thatxmlartifactfile . XML 下,它将自动包含在War中。
如果您需要从艺术工厂获取文件,您可以执行以下操作:
configurations {
jibx
}
dependencies {
jibx "some.group:someArtifact:1.0@xml"
war {
from { configurations.jibx.singleFile }
}
PS:直接将文件添加到最终的归档文件中,而不是通过中间的复制步骤,这通常是可能的,也是更可取的。
等级2.3;影子插件1.2.1。 在我的build.gradle中,我使用shadow插件来重新打包依赖项,如下所示: 我还将shadow jar添加到要发布的工件列表中:
问题内容: Go 1.8支持Go插件。 我创建了两个插件,如下所示。 据我了解,该插件仅公开包中的函数和变量。即对于非变量/函数将失败。 但是我想测试一个插件是否可以在内部从另一个插件调用方法,类似于C ++库如何调用另一个库。 所以我测试如下: plugin1 github.com/vimal/testplugin plugin2 github.com/vimal/testplugin1 这里的
我有自定义缓存控制器服务-CustomCacheService groupid-com.example.service Artifactid-CustomCacheService groupid-com.example.processor Artifactid-QueryCustomCache groupid-com.example.processor artifactid-loadcustomc
我目前正在使用Maven开发一个Java项目。在我的我收到了这个错误。 我添加了这种依赖性 到我的。但错误仍然是一样的。 我是否缺少为依赖项添加存储库?我也没有在我的。 有人能建议我在我的中添加的存储库代码吗?
问题内容: 对于Maven Central(或任何其他给定的Nexus存储库)上的工件,我想列出所有直接依赖项。 最初,我考虑过只阅读pom.xml并从依赖项部分收集所有条目。但是我注意到这些条目可能没有版本(由依赖管理提供),或者这些条目可能来自父poms。 我的第二个想法是建立某种人造Maven项目并使用收集相关性。这可能变得复杂。 什么是最直接(也是可靠)的方法? 问题答案: 在Maven插
我想在Gradle拥有所有可用的依赖构件之后,在将来手动下载依赖构件,因此我想获得Gradle用来下载这些构件的URL。 有没有一种方法可以获得Gradle下载的依赖项的URL?