Add support for maven-compiler-plugin configuration (#1)

This commit is contained in:
Tim Weißenfels 2024-04-23 15:51:22 +02:00 committed by GitHub
parent bc6665734d
commit f5e27775fa
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 178 additions and 12 deletions

View File

@ -469,3 +469,47 @@ jobs:
- name: Verify Java
run: bash __tests__/verify-java.sh "8" "${{ steps.setup-java.outputs.path }}"
shell: bash
setup-java-version-from-pom-maven-compiler-plugin-configuration:
name: ${{ matrix.distribution }} version from pom.xml - ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [macos-latest, windows-latest, ubuntu-latest]
distribution: ['adopt', 'zulu', 'liberica']
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Create pom.xml file
shell: bash
run: |
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" > pom.xml
echo "<project>" >> pom.xml
echo " <modelVersion>4.0.0</modelVersion>" >> pom.xml
echo " <groupId>foo.bar</groupId>" >> pom.xml
echo " <artifactId>FooBar</artifactId>" >> pom.xml
echo " <version>0.0.1-SNAPSHOT</version>" >> pom.xml
echo " <build>" >> pom.xml
echo " <plugins>" >> pom.xml
echo " <plugin>" >> pom.xml
echo " <groupId>org.apache.maven.plugins</groupId>" >> pom.xml
echo " <artifactId>maven-compiler-plugin</artifactId>" >> pom.xml
echo " <version>3.10.1</version>" >> pom.xml
echo " <configuration>" >> pom.xml
echo " <source>1.8</source>" >> pom.xml
echo " <target>1.8</target>" >> pom.xml
echo " </configuration>" >> pom.xml
echo " </plugin>" >> pom.xml
echo " </plugins>" >> pom.xml
echo " </build>" >> pom.xml
echo "</project>" >> pom.xml
- name: setup-java
uses: ./
id: setup-java
with:
distribution: ${{ matrix.distribution }}
java-version-file: 'pom.xml'
- name: Verify Java
run: bash __tests__/verify-java.sh "8" "${{ steps.setup-java.outputs.path }}"
shell: bash

48
dist/cleanup/index.js vendored
View File

@ -103834,16 +103834,21 @@ function parseJavaVersionFile(content) {
return fileContent;
}
function parsePomXmlFile(xmlFileAsString) {
const versionDefinitionTypes = [getByMavenCompilerSpecification, getBySpringBootSpecification];
for (var definitionType of versionDefinitionTypes) {
var version = definitionType(xmlbuilder2_1.create(xmlFileAsString));
const xmlDoc = xmlbuilder2_1.create(xmlFileAsString);
const versionDefinitionTypes = [
getByMavenProperties,
getBySpringBootSpecification,
getByMavenCompilerPluginConfig
];
for (const definitionType of versionDefinitionTypes) {
const version = definitionType(xmlDoc);
if (version !== null) {
return version;
}
}
return null;
}
function getByMavenCompilerSpecification(xmlDoc) {
function getByMavenProperties(xmlDoc) {
const possibleTagsRegex = [
'maven.compiler.source',
'maven.compiler.release',
@ -103869,6 +103874,41 @@ function getVersionByTagName(xmlDoc, tag) {
return null;
}
}
function getByMavenCompilerPluginConfig(xmlDoc) {
var _a;
const source = xmlDoc.find(n => {
// Find <source> node
if (n.node.nodeName !== "source") {
return false;
}
if (n.node.childNodes.length !== 1) {
return false;
}
// Must be within <configuration>
if (n.up().node.nodeName !== "configuration") {
return false;
}
// Which must be inside <plugin>
if (n.up().up().node.nodeName !== "plugin") {
return false;
}
// Make sure the plugin is maven-compiler-plugin
const isCompilerPlugin = n.up().up().some(c => {
if (c.node.nodeName !== "artifactId") {
return false;
}
if (c.node.childNodes.length !== 1) {
return false;
}
return c.first().toString() === "maven-compiler-plugin";
}, false, true);
if (!isCompilerPlugin) {
return false;
}
return true;
});
return (_a = source === null || source === void 0 ? void 0 : source.first().toString()) !== null && _a !== void 0 ? _a : null;
}
// By convention, action expects version 8 in the format `8.*` instead of `1.8`
function avoidOldNotation(content) {
return content.startsWith('1.') ? content.substring(2) : content;

48
dist/setup/index.js vendored
View File

@ -105491,16 +105491,21 @@ function parseJavaVersionFile(content) {
return fileContent;
}
function parsePomXmlFile(xmlFileAsString) {
const versionDefinitionTypes = [getByMavenCompilerSpecification, getBySpringBootSpecification];
for (var definitionType of versionDefinitionTypes) {
var version = definitionType(xmlbuilder2_1.create(xmlFileAsString));
const xmlDoc = xmlbuilder2_1.create(xmlFileAsString);
const versionDefinitionTypes = [
getByMavenProperties,
getBySpringBootSpecification,
getByMavenCompilerPluginConfig
];
for (const definitionType of versionDefinitionTypes) {
const version = definitionType(xmlDoc);
if (version !== null) {
return version;
}
}
return null;
}
function getByMavenCompilerSpecification(xmlDoc) {
function getByMavenProperties(xmlDoc) {
const possibleTagsRegex = [
'maven.compiler.source',
'maven.compiler.release',
@ -105526,6 +105531,41 @@ function getVersionByTagName(xmlDoc, tag) {
return null;
}
}
function getByMavenCompilerPluginConfig(xmlDoc) {
var _a;
const source = xmlDoc.find(n => {
// Find <source> node
if (n.node.nodeName !== "source") {
return false;
}
if (n.node.childNodes.length !== 1) {
return false;
}
// Must be within <configuration>
if (n.up().node.nodeName !== "configuration") {
return false;
}
// Which must be inside <plugin>
if (n.up().up().node.nodeName !== "plugin") {
return false;
}
// Make sure the plugin is maven-compiler-plugin
const isCompilerPlugin = n.up().up().some(c => {
if (c.node.nodeName !== "artifactId") {
return false;
}
if (c.node.childNodes.length !== 1) {
return false;
}
return c.first().toString() === "maven-compiler-plugin";
}, false, true);
if (!isCompilerPlugin) {
return false;
}
return true;
});
return (_a = source === null || source === void 0 ? void 0 : source.first().toString()) !== null && _a !== void 0 ? _a : null;
}
// By convention, action expects version 8 in the format `8.*` instead of `1.8`
function avoidOldNotation(content) {
return content.startsWith('1.') ? content.substring(2) : content;

View File

@ -158,10 +158,15 @@ function parseJavaVersionFile(content: string): string | null {
}
function parsePomXmlFile(xmlFileAsString: string): string | null {
const versionDefinitionTypes = [getByMavenCompilerSpecification, getBySpringBootSpecification];
const xmlDoc = create(xmlFileAsString);
const versionDefinitionTypes = [
getByMavenProperties,
getBySpringBootSpecification,
getByMavenCompilerPluginConfig
];
for (var definitionType of versionDefinitionTypes) {
var version = definitionType(create(xmlFileAsString));
for (const definitionType of versionDefinitionTypes) {
const version = definitionType(xmlDoc);
if (version !== null) {
return version;
@ -171,7 +176,7 @@ function parsePomXmlFile(xmlFileAsString: string): string | null {
return null;
}
function getByMavenCompilerSpecification(xmlDoc: XMLBuilder): string | null {
function getByMavenProperties(xmlDoc: XMLBuilder): string | null {
const possibleTagsRegex = [
'maven.compiler.source',
'maven.compiler.release',
@ -204,6 +209,43 @@ function getVersionByTagName(xmlDoc: XMLBuilder, tag: string): string | null {
}
function getByMavenCompilerPluginConfig(xmlDoc: XMLBuilder): string | null {
const source = xmlDoc.find(n => {
// Find <source> node
if (n.node.nodeName !== "source") {
return false;
}
if (n.node.childNodes.length !== 1) {
return false;
}
// Must be within <configuration>
if (n.up().node.nodeName !== "configuration") {
return false;
}
// Which must be inside <plugin>
if (n.up().up().node.nodeName !== "plugin") {
return false;
}
// Make sure the plugin is maven-compiler-plugin
const isCompilerPlugin = n.up().up().some(c => {
if (c.node.nodeName !== "artifactId") {
return false;
}
if (c.node.childNodes.length !== 1) {
return false;
}
return c.first().toString() === "maven-compiler-plugin";
}, false, true);
if (!isCompilerPlugin) {
return false;
}
return true;
});
return source?.first().toString() ?? null;
}
// By convention, action expects version 8 in the format `8.*` instead of `1.8`
function avoidOldNotation(content: string): string {
return content.startsWith('1.') ? content.substring(2) : content;