Skip to content

Commit 74dcef0

Browse files
authored
Merge pull request #28 from iherasymenko/jar-contents-copying
Correctly copy contents of JAR files on JDK < 16
2 parents aa5f3f1 + e394a01 commit 74dcef0

File tree

3 files changed

+62
-1
lines changed

3 files changed

+62
-1
lines changed

.github/workflows/build.yaml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,18 @@
11
name: Build Plugin
2-
on: push
2+
on: [ push, pull_request ]
33
jobs:
44
build:
55
runs-on: ubuntu-latest
6+
strategy:
7+
fail-fast: true
8+
matrix:
9+
jdk: [ 11 ]
610
steps:
711
- uses: actions/checkout@v2
12+
- uses: actions/setup-java@v2
13+
with:
14+
java-version: ${{ matrix.jdk }}
15+
distribution: temurin
816
- uses: eskatos/gradle-command-action@v1
917
with:
1018
arguments: :build

src/functionalTest/groovy/de/jjohannes/gradle/javamodules/test/ExtraJavaModuleInfoTest.groovy

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -675,6 +675,58 @@ class ExtraJavaModuleInfoTest extends Specification {
675675
build().task(':compileJava').outcome == TaskOutcome.SUCCESS
676676
}
677677

678+
// See: https://github.com/jjohannes/extra-java-module-info/issues/27
679+
def "correctly handles copying JAR contents on JDKs < 16"() {
680+
given:
681+
new File(testFolder.root, "src/main/java/org/gradle/sample/app/data").mkdirs()
682+
683+
testFolder.newFile("src/main/java/org/gradle/sample/app/Main.java") << """
684+
package org.gradle.sample.app;
685+
686+
public class Main {
687+
public static void main(String[] args) {
688+
System.out.println(org.w3c.css.sac.Parser.class);
689+
}
690+
}
691+
"""
692+
693+
testFolder.newFile("src/main/java/module-info.java") << """
694+
module org.gradle.sample.app {
695+
requires sac;
696+
}
697+
"""
698+
testFolder.newFile("build.gradle.kts") << """
699+
plugins {
700+
application
701+
id("de.jjohannes.extra-java-module-info")
702+
}
703+
704+
repositories {
705+
mavenCentral()
706+
}
707+
708+
java {
709+
modularity.inferModulePath.set(true)
710+
}
711+
712+
dependencies {
713+
implementation("org.w3c.css:sac:1.3")
714+
}
715+
716+
extraJavaModuleInfo {
717+
automaticModule("sac-1.3.jar", "sac")
718+
}
719+
720+
application {
721+
mainModule.set("org.gradle.sample.app")
722+
mainClass.set("org.gradle.sample.app.Main")
723+
}
724+
"""
725+
726+
expect:
727+
build().task(':compileJava').outcome == TaskOutcome.SUCCESS
728+
}
729+
678730
BuildResult build() {
679731
gradleRunnerFor(['build']).build()
680732
}

src/main/java/de/jjohannes/gradle/javamodules/ExtraModuleInfoTransform.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,7 @@ private static Map<String, String[]> copyAndExtractProviders(JarInputStream inpu
165165
providers.put(entryName.substring(SERVICES_PREFIX.length()), extractImplementations(content));
166166
}
167167
if (!JAR_SIGNATURE_PATH.matcher(jarEntry.getName()).matches() && !"META-INF/MANIFEST.MF".equals(jarEntry.getName())) {
168+
jarEntry.setCompressedSize(-1);
168169
outputStream.putNextEntry(jarEntry);
169170
outputStream.write(content);
170171
outputStream.closeEntry();

0 commit comments

Comments
 (0)