1- /*
2- * Copyright the GradleX team.
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-
1+ // SPDX-License-Identifier: Apache-2.0
172package org .gradlex .javamodule .dependencies ;
183
4+ import static org .gradle .api .attributes .Usage .JAVA_RUNTIME ;
5+ import static org .gradle .api .plugins .JavaPlatformPlugin .API_CONFIGURATION_NAME ;
6+ import static org .gradlex .javamodule .dependencies .internal .utils .ModuleInfo .Directive .REQUIRES ;
7+ import static org .gradlex .javamodule .dependencies .internal .utils .ModuleInfo .Directive .REQUIRES_RUNTIME ;
8+ import static org .gradlex .javamodule .dependencies .internal .utils .ModuleInfo .Directive .REQUIRES_STATIC ;
9+ import static org .gradlex .javamodule .dependencies .internal .utils .ModuleInfo .Directive .REQUIRES_STATIC_TRANSITIVE ;
10+ import static org .gradlex .javamodule .dependencies .internal .utils .ModuleInfo .Directive .REQUIRES_TRANSITIVE ;
11+
12+ import java .io .File ;
13+ import java .util .Arrays ;
14+ import java .util .List ;
15+ import java .util .stream .Collectors ;
16+ import java .util .stream .Stream ;
1917import org .gradle .api .Plugin ;
2018import org .gradle .api .Project ;
2119import org .gradle .api .artifacts .Configuration ;
3129import org .gradlex .javamodule .dependencies .tasks .CatalogGenerate ;
3230import org .jspecify .annotations .Nullable ;
3331
34- import java .io .File ;
35- import java .util .Arrays ;
36- import java .util .List ;
37- import java .util .stream .Collectors ;
38- import java .util .stream .Stream ;
39-
40- import static org .gradle .api .attributes .Usage .JAVA_RUNTIME ;
41- import static org .gradle .api .plugins .JavaPlatformPlugin .API_CONFIGURATION_NAME ;
42- import static org .gradlex .javamodule .dependencies .internal .utils .ModuleInfo .Directive .REQUIRES ;
43- import static org .gradlex .javamodule .dependencies .internal .utils .ModuleInfo .Directive .REQUIRES_RUNTIME ;
44- import static org .gradlex .javamodule .dependencies .internal .utils .ModuleInfo .Directive .REQUIRES_STATIC ;
45- import static org .gradlex .javamodule .dependencies .internal .utils .ModuleInfo .Directive .REQUIRES_STATIC_TRANSITIVE ;
46- import static org .gradlex .javamodule .dependencies .internal .utils .ModuleInfo .Directive .REQUIRES_TRANSITIVE ;
47-
4832@ SuppressWarnings ("unused" )
4933public abstract class JavaModuleVersionsPlugin implements Plugin <Project > {
50- private static final boolean MIN_GRADLE_9_0 = GradleVersion .current ().compareTo (GradleVersion .version ("9.0.0" )) >= 0 ;
34+ private static final boolean MIN_GRADLE_9_0 =
35+ GradleVersion .current ().compareTo (GradleVersion .version ("9.0.0" )) >= 0 ;
5136
5237 @ Override
5338 public void apply (Project project ) {
@@ -81,9 +66,14 @@ private void setupForJavaProject(Project project) {
8166
8267 if (GradleVersion .current ().compareTo (GradleVersion .version ("8.6" )) < 0 ) {
8368 // https://github.com/gradle/gradle/issues/26163
84- project .afterEvaluate (p -> platformElements .getOutgoing ().capability (project .getGroup () + ":" + project .getName () + "-platform:" + project .getVersion ()));
69+ project .afterEvaluate (p -> platformElements
70+ .getOutgoing ()
71+ .capability (project .getGroup () + ":" + project .getName () + "-platform:" + project .getVersion ()));
8572 } else {
86- platformElements .getOutgoing ().capability (project .provider (() -> project .getGroup () + ":" + project .getName () + "-platform:" + project .getVersion ()));
73+ platformElements
74+ .getOutgoing ()
75+ .capability (project .provider (
76+ () -> project .getGroup () + ":" + project .getName () + "-platform:" + project .getVersion ()));
8777 }
8878
8979 setupVersionsDSL (project , versions );
@@ -93,18 +83,24 @@ private void setupForJavaProject(Project project) {
9383
9484 private void setupVersionsDSL (Project project , Configuration configuration ) {
9585 project .getPlugins ().apply (JavaModuleDependenciesPlugin .class );
96- JavaModuleDependenciesExtension javaModuleDependencies = project .getExtensions ().getByType (JavaModuleDependenciesExtension .class );
86+ JavaModuleDependenciesExtension javaModuleDependencies =
87+ project .getExtensions ().getByType (JavaModuleDependenciesExtension .class );
9788 project .getExtensions ().create ("moduleInfo" , ModuleVersions .class , configuration , javaModuleDependencies );
9889 }
9990
10091 private void setupConstraintsValidation (Project project , Configuration configuration ) {
10192 configuration .getDependencyConstraints ().configureEach (d -> {
102- JavaModuleDependenciesExtension javaModuleDependencies = project .getExtensions ().getByType (JavaModuleDependenciesExtension .class );
93+ JavaModuleDependenciesExtension javaModuleDependencies =
94+ project .getExtensions ().getByType (JavaModuleDependenciesExtension .class );
10395 String userDefinedReason = d .getReason ();
10496 String ga = d .getModule ().toString ();
10597 Provider <String > moduleName = javaModuleDependencies .moduleName (ga );
106- if (moduleName .isPresent () && isModuleName (userDefinedReason ) && !moduleName .get ().equals (userDefinedReason )) {
107- project .getLogger ().lifecycle ("WARN: Expected module name for '" + ga + "' is '" + moduleName .get () + "' (not '" + userDefinedReason + "')" );
98+ if (moduleName .isPresent ()
99+ && isModuleName (userDefinedReason )
100+ && !moduleName .get ().equals (userDefinedReason )) {
101+ project .getLogger ()
102+ .lifecycle ("WARN: Expected module name for '" + ga + "' is '" + moduleName .get () + "' (not '"
103+ + userDefinedReason + "')" );
108104 }
109105 });
110106 }
@@ -114,7 +110,8 @@ private boolean isModuleName(@Nullable String s) {
114110 }
115111
116112 private void registerCatalogTask (Project project ) {
117- JavaModuleDependenciesExtension javaModuleDependencies = project .getExtensions ().getByType (JavaModuleDependenciesExtension .class );
113+ JavaModuleDependenciesExtension javaModuleDependencies =
114+ project .getExtensions ().getByType (JavaModuleDependenciesExtension .class );
118115 ModuleVersions moduleVersions = project .getExtensions ().getByType (ModuleVersions .class );
119116 project .getTasks ().register ("generateCatalog" , CatalogGenerate .class , t -> {
120117 t .setGroup ("java modules" );
@@ -131,12 +128,27 @@ private void registerCatalogTask(Project project) {
131128 moduleInfoFile = new File (srcDirSet , "java9/module-info.java" );
132129 }
133130 if (moduleInfoFile .exists ()) {
134- ModuleInfo moduleInfo = new ModuleInfo (project .getProviders ().fileContents (project .getLayout ().getProjectDirectory ().file (moduleInfoFile .getAbsolutePath ())).getAsText ().get ());
135- t .getEntries ().addAll (collectCatalogEntriesFromModuleInfos (javaModuleDependencies , moduleInfo .get (REQUIRES_TRANSITIVE )));
136- t .getEntries ().addAll (collectCatalogEntriesFromModuleInfos (javaModuleDependencies , moduleInfo .get (REQUIRES )));
137- t .getEntries ().addAll (collectCatalogEntriesFromModuleInfos (javaModuleDependencies , moduleInfo .get (REQUIRES_STATIC_TRANSITIVE )));
138- t .getEntries ().addAll (collectCatalogEntriesFromModuleInfos (javaModuleDependencies , moduleInfo .get (REQUIRES_STATIC )));
139- t .getEntries ().addAll (collectCatalogEntriesFromModuleInfos (javaModuleDependencies , moduleInfo .get (REQUIRES_RUNTIME )));
131+ ModuleInfo moduleInfo = new ModuleInfo (project .getProviders ()
132+ .fileContents (project .getLayout ()
133+ .getProjectDirectory ()
134+ .file (moduleInfoFile .getAbsolutePath ()))
135+ .getAsText ()
136+ .get ());
137+ t .getEntries ()
138+ .addAll (collectCatalogEntriesFromModuleInfos (
139+ javaModuleDependencies , moduleInfo .get (REQUIRES_TRANSITIVE )));
140+ t .getEntries ()
141+ .addAll (collectCatalogEntriesFromModuleInfos (
142+ javaModuleDependencies , moduleInfo .get (REQUIRES )));
143+ t .getEntries ()
144+ .addAll (collectCatalogEntriesFromModuleInfos (
145+ javaModuleDependencies , moduleInfo .get (REQUIRES_STATIC_TRANSITIVE )));
146+ t .getEntries ()
147+ .addAll (collectCatalogEntriesFromModuleInfos (
148+ javaModuleDependencies , moduleInfo .get (REQUIRES_STATIC )));
149+ t .getEntries ()
150+ .addAll (collectCatalogEntriesFromModuleInfos (
151+ javaModuleDependencies , moduleInfo .get (REQUIRES_RUNTIME )));
140152 }
141153 });
142154 });
@@ -147,12 +159,20 @@ private void registerCatalogTask(Project project) {
147159 });
148160 }
149161
150- private List <CatalogGenerate .CatalogEntry > collectCatalogEntriesFromVersions (JavaModuleDependenciesExtension javaModuleDependencies , ModuleVersions moduleVersions ) {
151- return moduleVersions .getDeclaredVersions ().entrySet ().stream ().map (mv -> new CatalogGenerate .CatalogEntry (mv .getKey (), javaModuleDependencies .ga (mv .getKey ()), mv .getValue ())).collect (Collectors .toList ());
162+ private List <CatalogGenerate .CatalogEntry > collectCatalogEntriesFromVersions (
163+ JavaModuleDependenciesExtension javaModuleDependencies , ModuleVersions moduleVersions ) {
164+ return moduleVersions .getDeclaredVersions ().entrySet ().stream ()
165+ .map (mv -> new CatalogGenerate .CatalogEntry (
166+ mv .getKey (), javaModuleDependencies .ga (mv .getKey ()), mv .getValue ()))
167+ .collect (Collectors .toList ());
152168 }
153169
154- private List <CatalogGenerate .CatalogEntry > collectCatalogEntriesFromModuleInfos (JavaModuleDependenciesExtension javaModuleDependencies , List <String > moduleNames ) {
155- return moduleNames .stream ().map (moduleName -> new CatalogGenerate .CatalogEntry (moduleName , javaModuleDependencies .ga (moduleName ), null )).collect (Collectors .toList ());
170+ private List <CatalogGenerate .CatalogEntry > collectCatalogEntriesFromModuleInfos (
171+ JavaModuleDependenciesExtension javaModuleDependencies , List <String > moduleNames ) {
172+ return moduleNames .stream ()
173+ .map (moduleName ->
174+ new CatalogGenerate .CatalogEntry (moduleName , javaModuleDependencies .ga (moduleName ), null ))
175+ .collect (Collectors .toList ());
156176 }
157177
158178 @ SuppressWarnings ("deprecation" )
0 commit comments