- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用Gradle构建项目(Java)。
Gradle 2.3,Java7/8。效果很好。
要构建项目,我们定义在编译,测试(testRuntime)和运行时阶段需要什么所有库,并在“依赖关系”部分定义所有这些库,例如:
dependencies {
compile 'some_groupID:some_artifactID:some_version_x.y.z@ext_if_any'
testRuntime 'SomeOtherOrSame_groupID:some_other_or_same_artifactID:some_version_x.y.z@ext_if_any'
runtime 'SomeOtherOrSame_groupID:some_other_or_same_artifactID:some_version_x.y.z@ext_if_any'
}
compile 'my.company.com:cool_library:1.0.0'
compile 'my.company.com:cool_library:1.0.1'
compile 'my.company.com:cool_library:1.1.0'
compile 'my.company.com:cool_library:1.2.0'
runtime 'my.company.com:another_cool_library:1.0.0'
runtime 'my.company.com:another_cool_library:1.2.0'
runtime 'my.company.com:cool_library:1.0.1'
最佳答案
我有一个gradle项目,可用于将特定的依赖版本下载到目录中,然后将其上传到我们的本地IVY存储库中,以便我们控制并拥有可用的特定版本的软件,以防它们消失。
其要旨是使用ant.retrieve将文件从所需版本的外部存储库中拉出到目录中,然后按需使用它们。
这不是完整的脚本,但我希望它能起作用。 Ant将使用 Ivy 缓存目录进行缓存,并且包含所有jar文件的“repo”将位于ivy-repo
目录中。您可以调整antRetrieve任务以展平您的文件结构(更改模式变量),并根据需要删除ivy/src文件,但是我向您展示了该脚本:
project.ext.REPO_DOWNLOADER_DIR = "ivy-repo"
project.ext.IVY_SETTINGS = 'ivy-settings.xml'
project.ext.IVY_CACHE = file('ivy-cache')
dependencies {
compile ':ivy:2.3+'
}
def antRetrieve(dep) {
// in each of the following patterns, the file will be downloaded with the [name] values filled in correctly,
// e.g. from ant:retrieve(..."src,source"), the [type] will be either "src" or "source" depending on which was available to download.
def jarPattern = "$REPO_DOWNLOADER_DIR/[organisation]/[revision]/[module]/[type]s/[artifact]-[revision].[ext]"
def srcPattern = "$REPO_DOWNLOADER_DIR/[organisation]/[revision]/[module]/[type]s/[artifact]-[revision](-[classifier]).[ext]"
def docPattern = "$REPO_DOWNLOADER_DIR/[organisation]/[revision]/[module]/[type]s/[artifact]-[revision](-[classifier]).[ext]"
def ivyPattern = "$REPO_DOWNLOADER_DIR/[organisation]/[revision]/[module]/ivy.xml"
def (org, module, rev) = dep.split(':')
println "retrieving $org:$module:$rev"
ant.retrieve(inline: "true", type: "jar,bundle", transitive: "true", pattern: "$jarPattern", ivypattern: "$ivyPattern", organisation: "$org", module: "$module", revision: "$rev", conf: "runtime,default")
ant.retrieve(inline: "true", type: "src,source,sources", transitive: "true", pattern: "$srcPattern", organisation: "$org", module: "$module", revision: "$rev", conf: "sources")
ant.retrieve(inline: "true", type: "doc,docs,javadoc,javadocs", transitive: "true", pattern: "$docPattern", organisation: "$org", module: "$module", revision: "$rev", conf: "javadoc")
}
task retrieve << {
ant.taskdef(resource: 'org/apache/ivy/ant/antlib.xml', classpath: configurations.compile.asPath)
ant.properties['repo.downloader.cache'] = IVY_CACHE
ant.settings(file: IVY_SETTINGS)
if (project.hasProperty('modules')) {
def moduleList = project.modules.split(',')
moduleList.each { module ->
antRetrieve(module)
}
}
if (project.hasProperty("modfile")) {
def modulesFile = file(project.modfile)
if (! modulesFile.exists()) {
throw new GradleException("Could not find specified modules file: $modulesFile")
}
modulesFile.eachLine { module ->
antRetrieve(module)
}
}
}
<ivysettings>
<settings defaultResolver="spring-chain" />
<caches defaultCacheDir="${repo.downloader.cache}" />
<resolvers>
<chain name="spring-chain">
<url name="com.springsource.repository.bundles.release">
<ivy pattern="http://repository.springsource.com/ivy/bundles/release/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
<artifact pattern="http://repository.springsource.com/ivy/bundles/release/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
</url>
<url name="com.springsource.repository.bundles.external">
<ivy pattern="http://repository.springsource.com/ivy/bundles/external/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
<artifact pattern="http://repository.springsource.com/ivy/bundles/external/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
</url>
<ibiblio name="ibiblio" m2compatible="true" />
<ibiblio name="uk-maven" m2compatible="true" root="http://uk.maven.org/maven2"/>
</chain>
</resolvers>
</ivysettings>
./gradlew retrieve -Pmodules='a:b:1.0,x:y:1.1'
./gradlew retrieve -PmodFile='/path/to/modlist.txt'
retrieve
任务进行迭代,但如果您不追究消息来源,那您应该没事。
关于gradle - Gradle-下载单个groupID的所有版本jar :artifactID from Artifactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31415278/
POM 是否可以声明(或至少发布)artifactId包含系统属性?我的意思是实际项目的 artifactId,而不是依赖项。 我正在使用 maven 构建一个 scala 项目,因此,为了允许为不同
我有一个看起来像这样的依赖项: dependencies { apt 'io.sweers.barber:barber-compiler:1.3.0' compile 'io.swee
这个问题已经有答案了: How to add local jar files to a Maven project? (35 个回答) 已关闭 7 年前。 我想将“html2image”库添加到我的项
最近几天我尝试使用 webservices 和 jboss4,我偶然发现了以下问题: 我在我的 pom.xml 中包含了这个依赖: org.jboss jboss-jaxws
我想要一个父 pom 为众多子 pom 定义一些要继承的属性。但是,当我尝试在父 pom 的这些属性之一中使用 artifactId 时,它会在子 pom 的有效 pom 中重复。下面是非常基本的例子
The underlying mechanism used to indicate which version of Scala a library was compiled against is t
我使用Gradle构建项目(Java)。 Gradle 2.3,Java7/8。效果很好。 要构建项目,我们定义在编译,测试(testRuntime)和运行时阶段需要什么所有库,并在“依赖关系”部分定
我的gradle文件中有以下条目 dependencies { compile 'org.A:A:1.0' } 会下载“org.B:B:1.0”,因为这是依赖关系。(在gradle中未明确提及
在处理项目时,我的要求是创建一个模块。 该命令将类似于: mvn archetype:generate \ -DarchetypeCatalog=local \ -DartifactId=te
我需要构建不同类型的库,它们仅在 list 信息上有所不同。 制作不同的项目不是一个好主意,因为来源完全相同。 我尝试了模块 pom,但是子 pom 无法引用父源。 我也尝试过使用 artifactI
我正在使用 Maven 构建一些不同的 Web 项目,并考虑如何命名它们的 Artifact 。对于 REST API 层,共享一些类很方便,所以我想创建 exchange-api.jar 文件,这些
我是 Java 新手。我想从文档中创建一个网络服务“Implementing a simple OWS service ”,但在 pom 文件中有两个错误: Missing artifact org.
我正在将现有项目转换为 Maven 以进行构建/依赖项/等,并且我正在尝试弄清楚如何列出其依赖项。 我知道它使用的一堆包,但我不确定它们将包含在哪个 Artifact 中。groupId 很容易弄清楚
我已经使用 archetype:create-from-project 从多模块项目中创建了一个原型(prototype)。 archetype-metadata.xml 如下所示,我想要的是当我运行
我有一个 maven POM,我想将其用作模板,根据我传递给它的参数生成具有不同名称的 Artifact 。但我不知道如何在运行时指定 artifactId。 如果我参数化 像这样的元素: foo-$
我刚刚尝试在 Maven 中创建一个项目,其 artifactId 完全由非英文字符(“日本国”)组成。 我从 Maven 得到以下反馈: 错误] fatal error [信息] ---------
我正在使用 gradle 的出版物和 Artifactory 插件向 Artifactory 发布一个由不同模块组成的 SDK。 所有内容都已发布,所有模块都分组在 build 中使用我在 gradl
我正在上传一些 my-libs.zip到 S3 并且无法获得覆盖默认值的语法 artifactId .目前artifactId ,捡到的是project.name来自 settings.gradle
我对 Akka 的 Java API 版本控制约定很好奇,但我在他们的文档中找不到任何内容。 如果您访问 Maven 存储库并搜索可用的 akka-actor 版本,您将找到如下条目: 'com.ty
我有一个多模块项目,我想按照 Maven Reactor 的排列顺序获取 artifactId 列表。这可以通过 Maven 命令行来完成吗? 到目前为止,我已经掌握了部分信息 mvn validat
我是一名优秀的程序员,十分优秀!