修改
在我们的构建过程中,我们构建了一些应用程序,这些应用程序是webstart应用程序。这些项目中的每一个都有一个pom,并使用Maven构建。构建过程的下一步是构建webapp,其中包含每个应用程序的jnlps和jars。我正在尝试构建包含Gradle中所有内容的jnlps和webapp,因为Gradle为我提供了更大的灵活性。在我们之前的构建系统中,一切都在Ant中完成。
我想创建一个gradle脚本,它将为每个项目生成jnlp文件。我想创建一个webstart应用程序列表,如下所示
projects = ['com.company:project1:1.0',
'com.company:project2:1.0',
'com.company:project3:1.0']
然后循环遍历每个项目,然后遍历每个依赖项以生成项目的xml,如下所示:
<jnlp spec="1.0" codebase = "..." href="...">
<!-- Other stuff goes here -->
<resources>
<jar href="lib/jython-2.5.3.jar"/>
<jar href="lib/commons-collections-3.2.1.jar"/>
<jar href="lib/xercesImpl-2.8.1.jar"/>
<!--- Other dependencies go here --->
</resources>
</jnlp>
如何在gradle代码中迭代项目列表的依赖项?在伪代码中,我想做这样的事情:
projects = ['com.company:project1:1.0',
'com.company:project2:1.0',
'com.company:project3:1.0']
for (project: projects) {
def fileName = "$project.name().jnlp"
File file = new File (fileName)
for (dependency: project) {
file.writeln("<jar href=\"lib/$dependency.fileName\"/>")
}
}
答案 0 :(得分:2)
您没有说明您宣布项目列表的方式。 如果所有项目配置对他都可见,Gradle可以解析您的依赖项。 这意味着您需要为每个项目建立gradle构建,以及要打印的依赖项。
根据您的问题,您可以将每个项目定义为单个java模块,例如在我们的项目中,我们有这样的结构
-our_project[our-project]
-modules (folder)
-core [our-project-core] (java module)
-web [our-project-web] (java module)
-portal [our-project-portal] (java module)
-build.gradle
-settings.gradle
-gradle.properties
每个模块都有自己的gradle配置。
这是settings.gradle文件的内容
rootProject.name = 'our-project'
include(':our-project-core', ':our-project-web', ':our_project-portal')
project(':our-project-core').projectDir = new File(settingsDir, 'modules/core')
project(':our-project-web').projectDir = new File(settingsDir, 'modules/web')
project(':our-project-portal').projectDir = new File(settingsDir, 'modules/portal')
在这种情况下,build.gradle的内容将是:
....
def coreModule = project(':our-project-core')
def webModule = project(':our-project-web')
def portalModule = project(':our-project-portal')
configure(coreModule) {
//core module configurations here like
dependencies {
compile("org.apache.commons:commons-io:1.4") //for example
....
}
}
configuration(webModule) {
//
}
等等。
答案 1 :(得分:1)
假设项目已应用java
插件:
for (file in project.configurations.runtime) {
println file
}