当前位置: 首页 > 知识库问答 >
问题:

Gradle如何构建包含一些子项目输出的Rpm?

仉刚洁
2023-03-14

我有一个多项目的设置,在这里我想从某些子项目构建Rpm文件,包含其他子项目的人工制品。看来我需要一些基本的基础知识。

项目布局如下:

rootProject
|
|-commonLibs
|
|---serviceA
| |
| |--module1
| \--module2
|
\---serviceB
  |
  |--module3
  \--module4

这两个服务都依赖于CommonLibs。

我使用的是Nebula.os-Package 2.0.2和Gradle2.2快照版本。

    null

所以,我想我应该在serviceA和ServiceB的build.gradle中做这样的事情:

apply plugin: 'os-package'
ospackage {
   ext.outputFiles = []
   project.childProjects.each {
     jar.outputs.files.each { File f ->
        outputs.add (f)
     }
   }
   from files(outputFiles) {
     into '/opt/mybusiness/product/lib'
   }
}

显然,这是行不通的:

gradlew serviceA:buildRpm
[...]
* What went wrong:
A problem occurred evaluating project ':serviceA'.
> Could not find property 'jar' on com.netflix.gradle.plugins.packaging.ProjectPackagingExtension_Decorated@2805c769.

好的,serviceA不是一个Java项目,所以我没有对它应用Java插件,只应用了os-package插件。但是,这两个子模块都应用了'java'插件,所以我假设可以从each闭包访问它们的jar任务。这一定是生成顺序问题。对吧?

在我的位置上,我应该做什么呢?欢迎使用nebula.os-package进行多项目构建的任何策略示例。我一直在网上搜索,但我发现任何东西都有问题。

共有1个答案

卫成和
2023-03-14

我想,像这样的东西应该能起到作用--添加到:serviceA&:serviceB的build.gradle中

configurations {
    commonJars
}

dependencies {
    commonJars project( path: ':commonLibs' ) // might be needed to add 'configuration' as well
}

ospackage {
    from configurations.commonJars
    ..
}
 类似资料:
  • 我有一个使用JNI的Java应用程序,我正在使用gradle构建C共享库,其中包含我作为JNI的一部分加载的代码。C构建是根构建的一个子项目。我可以从根项目的或任务中依赖,它确实构建了共享库(位于),但它不会将共享库添加到我的jar文件中,也不会设置Java库路径,以便在运行时访问共享对象。通过一些黑客操作(在我的运行任务中显式修改系统属性),我可以在使用时让它工作,但我希望能够构建一个JAR文件

  • 我的项目中有以下设置... 用于SOA风格项目的多项目gradle构建,使用Rabbitmq和Spring集成连接在一起。 包含许多grails项目以及表示服务的普通java/groovy项目。 每个服务项目旁边都有一个项目(jar),其中包含可以使用Spring集成代理的服务的所有公共接口(和消息)。 这些项目使用gradle依赖关系相互关联,然后我使用gradle想法插件生成IntelliJ项

  • 我有一个gradle多项目构建,每个子项目都在单独的git存储库中。在根项目的build.gradle,我试图为所有子项目定义一个任务,它将为每个项目执行一些git命令。但是,任务的工作目录始终是根项目的工作目录。 如何根据当前执行任务的子项目更改workingDir?

  • 问题内容: 在我的Android应用程序中,当执行引用从属.jar中的代码的代码时,出现提示。我的项目包括一个Android模块以及一个仅Java库模块,这是jar依赖项所在的位置。我正在使用gradle 1.10构建项目。这是我的项目布局: 主项目为空白,而主项目如下所示: Android应用看起来像: 该库是: 一切都编译和打包,没有错误,并且我在IDE(IntelliJ 13)中看不到任何错

  • 主要内容:多项目构建的结构,指定常规构建配置,项目指定配置和依赖关系,Gradle多项目构建的示例,子项目配置,参考可以轻松处理各种大小规模的项目。小项目由一个单一的构建文件和一个源代码树构成。 大项目可以将其拆分成更小的,相互依赖的模块,以便更容易理解。Gradle完美支持这种多项目构建的场景。 多项目构建的结构 这种构建有各种形状和大小,但它们都有一些共同的特点 - 在项目的根目录或主目录中都有一个文件。 根目录或主目录都有一个文件。 具有自己的构建文件的子目录(某些多项目构建可能会省略子项

  • 主要内容:Groovy插件,Groovy项目的默认项目布局本章介绍如何使用文件编译和执行Groovy项目。 Groovy插件 Gradle的Groovy插件扩展了Java插件,并为Groovy程序提供了任务。可以使用以下行来应用groovy插件。 完整的构建脚本文件如下。将以下代码复制到文件中。 可以使用以下命令来执行构建脚本。 Groovy项目的默认项目布局 Groovy插件假定Groovy项目有手动做过一定的设置。 包含Groovy源代码; 包含Gr