File: settings.gradle

package info (click to toggle)
bnd 2.4.1-6
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 14,480 kB
  • sloc: java: 93,752; xml: 19,453; sh: 268; makefile: 160
file content (123 lines) | stat: -rw-r--r-- 3,667 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
/*
 * Master Gradle initialization script
 *
 * Depends on bnd_* values from gradle.properties.
 */

import aQute.bnd.build.Workspace

/* Add bnd gradle plugin as a script dependency */
buildscript {
  repositories {
    ivy { /* Configure the repository as an "ivy" repository */
      url bnd_repourl
      layout 'pattern', {
            artifact '[module]/[artifact]-[revision].[ext]' /* OSGi repo pattern */
            artifact '[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier])(.[ext])' /* maven pattern */
      }
    }
  }
  dependencies {
    classpath fileTree(dir: 'bootstrap', include: ['*.jar'])
  }
  /* Since the files in the repository change with each build, we need to recheck for changes */
  configurations.classpath.resolutionStrategy.cacheChangingModulesFor 30, 'minutes'
  dependencies {
    components {
      all { ComponentMetadataDetails details ->
        details.changing = true
      }
    }
  }
  /* Pass bnd gradle plugin classpath to rootProject once created */
  def bndPlugin = files(configurations.classpath.files)
  gradle.rootProject { rootProject ->
    rootProject.ext.bndPlugin = bndPlugin
  }
}

/* Initialize the bnd workspace */
def workspace = Workspace.getWorkspace(rootDir, bnd_cnf)
if (workspace == null) {
  throw new GradleException("Unable to load workspace ${rootDir}/${bnd_cnf}")
}

/* Add cnf project to the graph */
include bnd_cnf

/* Start with the declared build project name */
def defaultProjectName = bnd_build

/* If in a subproject, use the subproject name */
for (def currentDir = startParameter.currentDir; currentDir != rootDir; currentDir = currentDir.parentFile) {
  defaultProjectName = currentDir.name
}

/* Build a set of project names we need to include from the specified tasks */
def projectNames = startParameter.taskNames.collect { taskName ->
  def elements = taskName.split(':')
  switch (elements.length) {
    case 1:
      return defaultProjectName
    case 2:
      return elements[0].empty ? bnd_build : elements[0]
    default:
      return elements[0].empty ? elements[1] : elements[0]
  }
}.toSet()

/* Include the default project name if in a subproject or no tasks specified */
if ((startParameter.currentDir != rootDir) || projectNames.empty) {
  projectNames += defaultProjectName
}

/* If bnd_build used but declared empty, add all non-private folders of rootDir */
if (projectNames.remove('')) {
  rootDir.eachDir {
    def projectName = it.name
    if (!projectName.startsWith('.')) {
      projectNames += projectName
    }
  }
}

/* Add each project and its dependencies to the graph */
projectNames.each { projectName ->
  include projectName
  def project = getBndProject(workspace, projectName)
  project?.dependson.each {
    include it.name
  }
}

/* Get the bnd project for the specified project name */
def getBndProject(Workspace workspace, String projectName) {
  def project = workspace.getProject(projectName)
  if (project == null) {
    return null
  }
  project.prepare()
  if (project.isValid()) {
    return project
  }

  project.getInfo(workspace, "${rootDir} :")
  def errorCount = 0
  project.warnings.each {
    println "Warning: ${it}"
  }
  project.errors.each {
    println "Error  : ${it}"
    errorCount++
  }
  if (!project.isOk()) {
    def str = 'even though no errors were reported'
    if (errorCount == 1) {
      str = 'one error was reported'
    } else if (errorCount > 1) {
      str = "${errorCount} errors were reported"
    }
    throw new GradleException("Project ${rootDir}/${projectName} is invalid, ${str}")
  }
  throw new GradleException("Project ${rootDir}/${projectName} is not a valid bnd project")
}