Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
ProB Rodin Plugin
Manage
Activity
Members
Labels
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Analyze
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
general
stups
ProB Rodin Plugin
Commits
6ff8cc19
Commit
6ff8cc19
authored
13 years ago
by
Jens Bendisposto
Browse files
Options
Downloads
Plain Diff
merged removes
parents
c4c0c005
0b2d3739
No related branches found
No related tags found
No related merge requests found
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
build.gradle
+398
-58
398 additions, 58 deletions
build.gradle
settings.gradle
+1
-1
1 addition, 1 deletion
settings.gradle
with
399 additions
and
59 deletions
build.gradle
+
398
−
58
View file @
6ff8cc19
apply
plugin:
'base'
apply
plugin:
'base'
/* --! Please Define the Parent ID and and the Group Id! --! */
groupID
=
"de.prob"
parentID
=
"de.prob.parent"
// must be the same as the folder name
features
=
[
"de.prob2.feature"
]
// must be the same as the folder name
repositoryName
=
"de.prob.repository"
// will be the folder name
def
download
(
address
,
target
)
{
def
file
=
new
FileOutputStream
(
target
)
def
out
=
new
BufferedOutputStream
(
file
)
out
<<
new
URL
(
address
).
openStream
()
out
.
close
()
}
def
projects
(
int
i
){
return
subprojects
.
name
[
i
]
}
// returns the name of a subproject listed in the settings.gradle file
def
numberOfProjects
(){
return
subprojects
.
name
.
size
()
}
// returns the number of projects listed in the settings.gradle file
task
downloadCli
<<
{
dir
=
'de.prob.core/prob/'
delete
file
(
dir
)
new
File
(
dir
).
mkdirs
()
[
'leopard'
:
'macos'
,
'linux'
:
'linux'
,
'linux64'
:
'linux64'
,
'win32'
:
'windows'
].
each
{
n
=
it
.
getKey
()
targetdir
=
dir
+
it
.
getValue
()
targetzip
=
dir
+
"probcli_${n}.zip"
url
=
"http://nightly.cobra.cs.uni-duesseldorf.de/cli/probcli_${n}.zip"
download
(
url
,
targetzip
)
FileTree
zip
=
zipTree
(
targetzip
)
copy
{
from
zip
into
targetdir
}
delete
file
(
targetzip
)
}
}
/* -- Return ParentId -- */
def
parentId
(){
return
parentID
}
/*
* This is the project of the parent Pom
* The Tycho Maven Build is triggered from
* this project's pom
*/
/* -- Return Group Id -- */
def
groupId
(){
return
groupID
}
/*
* This Group ID will be used in every sub project
*/
/////////////////////////////////////////////////////////////////////////////////////////
// -- !!! DEFINING SUB PROJECTS !!! -- //
/////////////////////////////////////////////////////////////////////////////////////////
subprojects
{
apply
plugin:
'base'
task
deleteArtifacts
(
type:
Delete
)
{
delete
'target'
,
'pom.xml'
}
task
deploy
()
<<{
description
=
"\tGenerating the Tycho Poms. Please remember to add a '.qualifier' to the version numbers!"
versionNumber
=
'Version Number Error:\tcheck Manifest for Bundle-Version Number and make sure to add a ".qualifier" to the version numbers!\n'
artifactId
=
'Could not find Bundle-SymbolicName in Manifest.file'
/* -- In case of changed Manifest File in Eclipse:
*
* Version Numbers of the projects are collected via
* regular expressions in the Manifest.MF File.
* Versionnumber of the projects are equal to their
* Bundle-Version Number
*/
if
(
features
.
every
{
it
!=
project
.
name
}){
content
=
new
File
(
"${project.name}/META-INF/MANIFEST.MF"
).
getText
(
"UTF-8"
)
printFileLine
=
{
if
(
it
==~
/Bundle-Version.+qualifier/
){
versionNumber
=
it
.
substring
(
16
)
// possibile error: cuts off first 16 chars
/* Version Number is taken from Bundle-Version in Manifest.MF
* If there is no Bundle-Version or the versionnumber needs to
* be taken from a different key word, please change the
* regular expression and the substring above
*/
}
if
(
it
==~
/Bundle-SymbolicName:.+/
){
artifactId
=
it
.
substring
(
21
)
artifactId
=
artifactId
.
replace
(
";singleton:=true"
,
''
)
}
/* Artifact ID is taken from Bundle-SymbolicName minus the
* 16 chars ';singleton:=true'
*/
}
content
.
eachLine
(
printFileLine
)
println
artifactId
println
"\t"
+
versionNumber
def
f
=
new
File
(
artifactId
+
'/pom.xml'
)
f
.
delete
()
f
<<
start
()+
elder
()+
repos
()+
artifact
(
artifactId
,
versionNumber
)+
end
()
/*
* old pom.xml files are deleted and replaced by new auto generated Tycho pom.xml files
*/
}
else
{
// if subprojects are neither a feature, repository nor parent
// -- Features -- //
if
(
features
.
any
{
it
==
project
.
name
}
){
boolean
idfound
=
false
content
=
new
File
(
"${project.name}/feature.xml"
).
getText
(
"UTF-8"
)
printFileLine
=
{
if
(
it
==~
/.+version.+qualifier.+/
){
versionNumber
=
it
.
substring
(
15
,
it
.
size
()-
1
)
// possibile error: cuts off first 15 chars and leaves out last '"'
/* Version Number is taken from Feature.xml
* feature.xml is searched for version="version.qualifier"
* first 15 chars and last '"' are cut off
*/
}
if
(
it
==~
/.+id=".+/
&&
idfound
==
false
){
artifactId
=
it
.
substring
(
10
,
it
.
length
()-
1
)
idfound
=
true
}
/* Artifact ID is taken from Bundle-SymbolicName minus the
* 16 chars ';singleton:=true'
*/
}
content
.
eachLine
(
printFileLine
)
println
artifactId
println
"\t"
+
versionNumber
def
f
=
new
File
(
artifactId
+
'/pom.xml'
)
f
.
delete
()
f
<<
feature
(
artifactId
,
versionNumber
)
}
}
}
}
// defining subprojects
clean
{
dependsOn
+=
subprojects
.
deleteArtifacts
}
task
createParent
()
<<
{
// -- define Parent -- //
new
File
(
"${parentID}"
).
mkdir
()
versionNumber
=
'1.0.0.qualifier'
artifactId
=
parentId
()
def
f
=
new
File
(
artifactId
+
'/pom.xml'
)
f
.
delete
()
f
<<
parentPom
(
artifactId
)
for
(
int
i
=
0
;
i
<
numberOfProjects
();
i
++){
f
<<
module
(
i
)
}
f
<<
endParent
()
}
task
createRepository
()
<<
{
// -- define Repository -- //
new
File
(
"${repositoryName}"
).
mkdir
()
versionNumber
=
'1.0.0.qualifier'
artifactId
=
repositoryName
featureVersionNumber
=
'1.0.0.qualifier'
def
f
=
new
File
(
artifactId
+
'/category.xml'
)
f
.
delete
()
f
<<
categoryHead
()
for
(
int
i
=
0
;
i
<
features
.
size
();
i
++){
content
=
new
File
(
"${features[i]}/feature.xml"
).
getText
(
"UTF-8"
)
printFileLine
=
{
if
(
it
==~
/.+version.+qualifier.+/
){
featureVersionNumber
=
it
.
substring
(
15
,
it
.
size
()-
1
)
// possibile error: cuts off first 15 chars and leaves out last '"'
/* Version Number is taken from Feature.xml
* feature.xml is searched for version="version.qualifier"
* first 15 chars and last '"' are cut off
*/
}
}
content
.
eachLine
(
printFileLine
)
f
<<
categoryFeatures
(
features
[
i
],
featureVersionNumber
)
}
// for
for
(
int
i
=
0
;
i
<
features
.
size
();
i
++){
f
<<
categoryDescription
(
features
[
i
],
"Test"
,
"categorydescription"
)
}
//for
f
<<
categoryEnd
()
def
pom
=
new
File
(
artifactId
+
'/pom.xml'
)
pom
.
delete
()
pom
<<
reposi
()
}
// end of repository definition
task
createPoms
(
dependsOn:
[
createParent
,
createRepository
,
subprojects
.
deploy
])
task
collectArtifacts
(
type:
Copy
)
{
from
'de.prob.repository/target/repository/'
into
'updatesite'
}
task
install
(
dependsOn:
[
createPoms
,
downloadCli
]
,
type:
Exec
)
{
description
=
"\tExecutes a 'mvn install' of the parent pom.xml and auto-generates Tycho Poms"
commandLine
'mvn'
,
'install'
,
'-f'
,
'de.prob.parent/pom.xml'
}
//--- Defining Tycho POM parts --//
//--- Defining Tycho POM parts --//
def
artifact
(
artifactId
,
versionNumber
)
{
"""
def
artifact
(
artifactId
,
versionNumber
)
{
"""
<groupId>
de.prob
</groupId>
<groupId>
${groupId()}
</groupId>
<artifactId>${artifactId}</artifactId>
<artifactId>${artifactId}</artifactId>
<version>${versionNumber}</version>
<version>${versionNumber}</version>
<packaging>eclipse-plugin</packaging>
<packaging>eclipse-plugin</packaging>
...
@@ -21,10 +295,10 @@ apply plugin: 'base'
...
@@ -21,10 +295,10 @@ apply plugin: 'base'
def
elder
()
{
"""
def
elder
()
{
"""
<parent>
<parent>
<groupId>
de.prob
</groupId>
<groupId>
${groupId()}
</groupId>
<artifactId>
de.prob.
parent</artifactId>
<artifactId>
${
parent
Id()}
</artifactId>
<version>1.0.0.qualifier</version>
<version>1.0.0.qualifier</version>
<relativePath>../
de.prob.
parent/pom.xml</relativePath>
<relativePath>../
${
parent
Id()}
/pom.xml</relativePath>
</parent>
</parent>
"""
}
"""
}
...
@@ -51,72 +325,138 @@ apply plugin: 'base'
...
@@ -51,72 +325,138 @@ apply plugin: 'base'
</project>
</project>
"""
}
"""
}
// -- defining Parent Pom -- //
def
parentPom
(
artifactId
)
{
"""<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
def
download
(
address
,
target
)
{
<groupId>${groupId()}</groupId>
def
file
=
new
FileOutputStream
(
target
)
<artifactId>${artifactId}</artifactId>
def
out
=
new
BufferedOutputStream
(
file
)
<version>1.0.0.qualifier</version>
out
<<
new
URL
(
address
).
openStream
()
out
.
close
()
}
<packaging>pom</packaging>
task
downloadCli
<<
{
<!-- this is the parent POM from which all modules inherit common settings -->
dir
=
'de.prob.core/prob/'
<properties>
delete
file
(
dir
)
<tycho-version>0.14.1</tycho-version>
new
File
(
dir
).
mkdirs
()
</properties>
[
'leopard'
:
'macos'
,
'linux'
:
'linux'
,
'linux64'
:
'linux64'
,
'win32'
:
'windows'
].
each
{
n
=
it
.
getKey
()
targetdir
=
dir
+
it
.
getValue
()
<repositories>
targetzip
=
dir
+
"probcli_${n}.zip"
<!-- configure p2 repository to resolve against -->
url
=
"http://nightly.cobra.cs.uni-duesseldorf.de/cli/probcli_${n}.zip"
<repository>
download
(
url
,
targetzip
)
<id>prob_target</id>
FileTree
zip
=
zipTree
(
targetzip
)
<layout>p2</layout>
copy
{
<url>http://cobra.cs.uni-duesseldorf.de/prob_dev_target/</url>
from
zip
</repository>
into
targetdir
}
delete
file
(
targetzip
)
}
}
subprojects
{
<repository>
<id>indigo</id>
<layout>p2</layout>
<url>http://download.eclipse.org/releases/indigo/</url>
</repository>
apply
plugin:
'base'
</repositories>
task
deploy
(){
<build>
description
=
"\tGenerating the Tycho Poms"
<plugins>
<plugin>
<!-- enable tycho build extension -->
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-maven-plugin</artifactId>
<version>0.14.1</version>
<extensions>true</extensions>
</plugin>
</plugins>
</build>
<!-- the modules that should be built together -->
<modules>
"""
}
versionNumber
=
'Version Number Error: check Manifest for Bundle-Version Number'
//for(int i = 0; i < numberOfProjects(); i++)
/* -- In case of changed Manifest File in Eclipse:
*
* Version Numbers of the projects are collected via
* regular expressions in the Manifest.MF File.
* Versionnumber of the projects are equal to their
* Bundle-Version Number
*/
}
task
deleteArtifacts
(
type:
Delete
)
{
def
module
(
int
i
){
delete
'target'
,
'pom.xml'
if
(
projects
(
i
)!=
parentId
()){
""" <module>../${projects(i)}</module>
"""
}
else
{
""""""
}
}
}
}
task
createPoms
(
dependsOn:
subprojects
.
deploy
)
def
endParent
()
{
"""
</modules>
</project>
"""
}
task
collectArtifacts
(
type:
Copy
)
{
// end of defining parent pom.xml
from
'de.prob.repository/target/repository/'
into
'updatesite'
// repository Pom
}
def
reposi
()
{
"""
<?xml version="1.0" encoding="UTF-8"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>${groupID}</groupId>
<artifactId>${parentID}</artifactId>
<version>1.0.0.qualifier</version>
<relativePath>../${parentID}/pom.xml</relativePath>
</parent>
clean
{
<groupId>${groupID}</groupId>
dependsOn
+=
subprojects
.
deleteArtifacts
<artifactId>${repositoryName}</artifactId>
}
<version>1.0.0.qualifier</version>
<packaging>eclipse-repository</packaging>
</project>
"""
}
// creates a category in
def
categoryHead
()
{
"""<?xml version="1.0" encoding="UTF-8"?>
<site>
"""
}
def
categoryFeatures
(
artifactId
,
versionNumber
){
"""
<feature url="features/${artifactId}_${versionNumber}.jar" id="${artifactId}" version="${versionNumber}">
<category name="${artifactId}.category"/>
</feature>
"""
}
def
categoryDescription
(
artifactId
,
categoryName
,
categorydescription
){
"""
<category-def name="${artifactId}.category" label="${categoryName}">
<description>
${categorydescription}
</description>
</category-def>
"""
}
def
categoryEnd
(){
"""
</site>
"""
}
// end of category definition
// feature pom
def
feature
(
artifactId
,
versionNumber
)
{
"""
<?xml version="1.0" encoding="UTF-8"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>${groupId()}</groupId>
<artifactId>${parentId()}</artifactId>
<version>1.0.0.qualifier</version>
<relativePath>../${parentId()}/pom.xml</relativePath>
</parent>
<groupId>${groupId()}</groupId>
<artifactId>${artifactId}</artifactId>
<version>${versionNumber}</version>
<packaging>eclipse-feature</packaging>
</project>
"""
}
// end of feature pom
// Build Script can be executed via gradle install
// Build Script can be executed via gradle install
...
...
This diff is collapsed.
Click to expand it.
settings.gradle
+
1
−
1
View file @
6ff8cc19
include
'de.prob.parent'
,
'de.prob.core'
,
'de.bmotionstudio.gef.editor'
,
'de.bmotionstudio.rodin'
,
'de.prob.feature'
,
'de.prob.plugin'
,
'de.prob.repository'
,
'de.prob.ui'
,
'de.prob2.feature'
include
'de.prob.core'
,
'de.bmotionstudio.gef.editor'
,
'de.bmotionstudio.rodin'
,
'de.prob.plugin'
,
'de.prob.ui'
,
'de.prob2.feature'
\ No newline at end of file
\ No newline at end of file
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment