Skip to content

Commit 559175b

Browse files
authored
Merge pull request #1 from cicsdev/aj-wrappers
added wrappers
2 parents e8695f8 + 7ed0896 commit 559175b

File tree

17 files changed

+1010
-65
lines changed

17 files changed

+1010
-65
lines changed

.github/workflows/java.yml

Lines changed: 11 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,13 @@ on:
99
- cron: '0 0 * * *'
1010

1111
jobs:
12-
build-maven:
13-
name: Build Maven
12+
build-mvnw:
13+
name: Build Maven Wrapper
1414

1515
runs-on: ubuntu-latest
16-
continue-on-error: ${{ matrix.experimental }}
1716
strategy:
1817
matrix:
19-
jdk: [8, 11]
20-
experimental: [false]
21-
include:
22-
- jdk: 17
23-
experimental: true
18+
jdk: [8, 11, 17, 21]
2419
steps:
2520
- uses: actions/checkout@v3
2621
- name: Set up JDK ${{ matrix.jdk }}
@@ -30,28 +25,16 @@ jobs:
3025
distribution: "semeru"
3126
cache: maven
3227
- name: Build with Maven
33-
run: mvn --batch-mode --update-snapshots --file pom.xml -Djava.version=${{ matrix.jdk }} package
34-
- run: |
35-
mkdir staging
36-
cp cics-java-osgi-jdbc-app/target/*.jar staging
37-
cp cics-java-osgi-jdbc-bundle/target/*.zip staging
38-
- uses: actions/upload-artifact@v4
39-
with:
40-
name: cics-java-osgi-jdbc (Maven, Java ${{ matrix.jdk }})
41-
path: staging
28+
run: ./mvnw --batch-mode --update-snapshots --file pom.xml -Djava.version=${{ matrix.jdk }} verify
29+
30+
31+
build-gradlew:
32+
name: Build Gradle Wrapper
4233

43-
build-gradle:
44-
name: Build Gradle
45-
4634
runs-on: ubuntu-latest
47-
continue-on-error: ${{ matrix.experimental }}
4835
strategy:
4936
matrix:
50-
jdk: [8, 11]
51-
experimental: [false]
52-
include:
53-
- jdk: 17
54-
experimental: true
37+
jdk: [8, 11, 17, 21]
5538
steps:
5639
- uses: actions/checkout@v3
5740
- name: Set up JDK ${{ matrix.jdk }}
@@ -61,6 +44,6 @@ jobs:
6144
distribution: 'semeru'
6245
- uses: gradle/actions/setup-gradle@v3
6346
with:
64-
gradle-version: 7.6
47+
gradle-version: 8.6
6548
- name: Build with Gradle
66-
run: gradle build -Pjava_version=${{ matrix.jdk }}
49+
run: ./gradlew clean build -Pjava_version=${{ matrix.jdk }}
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
/*
2+
* Copyright 2007-present the original author or authors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
import java.net.*;
17+
import java.io.*;
18+
import java.nio.channels.*;
19+
import java.util.Properties;
20+
21+
public class MavenWrapperDownloader {
22+
23+
private static final String WRAPPER_VERSION = "0.5.6";
24+
/**
25+
* Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
26+
*/
27+
private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/"
28+
+ WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";
29+
30+
/**
31+
* Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
32+
* use instead of the default one.
33+
*/
34+
private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
35+
".mvn/wrapper/maven-wrapper.properties";
36+
37+
/**
38+
* Path where the maven-wrapper.jar will be saved to.
39+
*/
40+
private static final String MAVEN_WRAPPER_JAR_PATH =
41+
".mvn/wrapper/maven-wrapper.jar";
42+
43+
/**
44+
* Name of the property which should be used to override the default download url for the wrapper.
45+
*/
46+
private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
47+
48+
public static void main(String args[]) {
49+
System.out.println("- Downloader started");
50+
File baseDirectory = new File(args[0]);
51+
System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
52+
53+
// If the maven-wrapper.properties exists, read it and check if it contains a custom
54+
// wrapperUrl parameter.
55+
File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
56+
String url = DEFAULT_DOWNLOAD_URL;
57+
if(mavenWrapperPropertyFile.exists()) {
58+
FileInputStream mavenWrapperPropertyFileInputStream = null;
59+
try {
60+
mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
61+
Properties mavenWrapperProperties = new Properties();
62+
mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
63+
url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
64+
} catch (IOException e) {
65+
System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
66+
} finally {
67+
try {
68+
if(mavenWrapperPropertyFileInputStream != null) {
69+
mavenWrapperPropertyFileInputStream.close();
70+
}
71+
} catch (IOException e) {
72+
// Ignore ...
73+
}
74+
}
75+
}
76+
System.out.println("- Downloading from: " + url);
77+
78+
File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
79+
if(!outputFile.getParentFile().exists()) {
80+
if(!outputFile.getParentFile().mkdirs()) {
81+
System.out.println(
82+
"- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'");
83+
}
84+
}
85+
System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
86+
try {
87+
downloadFileFromURL(url, outputFile);
88+
System.out.println("Done");
89+
System.exit(0);
90+
} catch (Throwable e) {
91+
System.out.println("- Error downloading");
92+
e.printStackTrace();
93+
System.exit(1);
94+
}
95+
}
96+
97+
private static void downloadFileFromURL(String urlString, File destination) throws Exception {
98+
if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
99+
String username = System.getenv("MVNW_USERNAME");
100+
char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
101+
Authenticator.setDefault(new Authenticator() {
102+
@Override
103+
protected PasswordAuthentication getPasswordAuthentication() {
104+
return new PasswordAuthentication(username, password);
105+
}
106+
});
107+
}
108+
URL website = new URL(urlString);
109+
ReadableByteChannel rbc;
110+
rbc = Channels.newChannel(website.openStream());
111+
FileOutputStream fos = new FileOutputStream(destination);
112+
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
113+
fos.close();
114+
rbc.close();
115+
}
116+
117+
}

.mvn/wrapper/maven-wrapper.jar

49.5 KB
Binary file not shown.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip
2+
wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar

MAINTAINERS.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Maintainers
2+
3+
- Ivan D. Hargreaves [@IvanHargreaves](https://github.com/IvanHargreaves)
4+
- Alex Brown [@AlexBrown](https://github.com/SoftlySplinter)
5+
- Phil Wakelin [@PhilWakelin](https://github.com/PhilWakelin)
6+
- Aaron Jhaj [@AaronJhaj](https://github.com/AaronJhaj)
7+
8+
*Last reviewed:* December 2024

README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ On the command line, you simply swap the Gradle or Maven command for the wrapper
1919

2020
For an IDE, taking Eclipse as an example, the plug-ins for Gradle *buildship* and Maven *m2e* will integrate with the "Run As..." capability, allowing you to specify whether you want to build the project with a Wrapper, or a specific version of your chosen build tool.
2121

22-
The required build-tasks are typically `clean assemble` for Gradle and `clean package` for Maven. Once run, Gradle will generate a JAR file in the `build/libs` directory, while Maven will generate it in the `target` directory.
22+
The required build-tasks are typically `clean build` for Gradle and `clean verify` for Maven. Once run, Gradle will generate a JAR file in the `build/libs` directory, while Maven will generate it in the `target` directory.
2323

2424
**Note:** If you import the project to your IDE, you might experience local project compile errors. To resolve these errors you should run a tooling refresh on that project.
2525
For example, in Eclipse:
@@ -34,12 +34,12 @@ Run the following in a local command prompt:
3434
On Linux or Mac:
3535

3636
```shell
37-
./gradlew clean assemble
37+
./gradlew clean build
3838
```
3939
On Windows:
4040

4141
```shell
42-
gradlew.bat clean assemble
42+
gradlew.bat clean build
4343
```
4444

4545
This creates a JAR file in the `build/libs` directory.
@@ -50,13 +50,13 @@ Run the following in a local command prompt:
5050
On Linux or Mac:
5151

5252
```shell
53-
./mvnw clean package
53+
./mvnw clean verify
5454
```
5555

5656
On Windows:
5757

5858
```shell
59-
mvnw.cmd clean package
59+
mvnw.cmd clean verify
6060
```
6161

6262
This creates a JAR file in the `target` directory.

cics-java-osgi-jdbc-app/pom.xml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,20 @@
2323

2424
<build>
2525
<plugins>
26+
<plugin>
27+
<groupId>org.apache.maven.plugins</groupId>
28+
<artifactId>maven-compiler-plugin</artifactId>
29+
<version>3.13.0</version>
30+
<configuration>
31+
<annotationProcessorPaths>
32+
<annotationProcessorPath>
33+
<groupId>com.ibm.cics</groupId>
34+
<artifactId>com.ibm.cics.server.invocation</artifactId>
35+
<version>6.1</version>
36+
</annotationProcessorPath>
37+
</annotationProcessorPaths>
38+
</configuration>
39+
</plugin>
2640
<plugin>
2741
<groupId>org.apache.maven.plugins</groupId>
2842
<artifactId>maven-jar-plugin</artifactId>

cics-java-osgi-jdbc-app/src/main/resources/META-INF/MANIFEST.MF

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ Bundle-Name: CICS OSGi JDBC application - Application
44
Bundle-SymbolicName: com.ibm.cicsdev.java.osgi.jdbc
55
Bundle-Version: 1.0.0
66
Import-Package: com.ibm.cicsdev.java.osgi.jdbc;version="1.0.0",
7-
com.ibm.cics.server;version="[1.700.0,2.0.0)"
7+
com.ibm.cics.server;version="[2.0.0,3.0.0)"
88
Export-Package: com.ibm.cicsdev.java.osgi.jdbc;version="1.0.0"
99
CICS-MainClass: com.ibm.cicsdev.java.osgi.jdbc.JDBCQueryProgram

cics-java-osgi-jdbc-bundle/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
plugins {
2-
id 'com.ibm.cics.bundle' version "1.0.5"
2+
id 'com.ibm.cics.bundle' version "1.0.7"
33
}
44

55
dependencies {
@@ -8,7 +8,7 @@ dependencies {
88

99
cicsBundle {
1010
build {
11-
defaultJVMServer = "DFHOSGI"
11+
defaultJVMServer = project.findProperty("cics.jvmserver") ?: "DFHOSGI"
1212
}
1313
}
1414

cics-java-osgi-jdbc-bundle/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@
2525
<plugin>
2626
<groupId>com.ibm.cics</groupId>
2727
<artifactId>cics-bundle-maven-plugin</artifactId>
28+
<version>1.0.7</version>
29+
<extensions>true</extensions>
30+
<configuration>
31+
<defaultjvmserver>${cics.jvmserver}</defaultjvmserver>
32+
</configuration>
2833
</plugin>
2934
</plugins>
3035
</build>

0 commit comments

Comments
 (0)