6666import org .springframework .boot .build .bom .Library .VersionAlignment ;
6767import org .springframework .boot .build .bom .bomr .version .DependencyVersion ;
6868import org .springframework .boot .build .mavenplugin .MavenExec ;
69+ import org .springframework .boot .build .properties .BuildProperties ;
6970import org .springframework .util .FileCopyUtils ;
7071import org .springframework .util .PropertyPlaceholderHelper ;
7172import org .springframework .util .PropertyPlaceholderHelper .PlaceholderResolver ;
7879 */
7980public class BomExtension {
8081
82+ private final Project project ;
83+
84+ private final UpgradeHandler upgradeHandler ;
85+
8186 private final Map <String , DependencyVersion > properties = new LinkedHashMap <>();
8287
8388 private final Map <String , String > artifactVersionProperties = new HashMap <>();
8489
8590 private final List <Library > libraries = new ArrayList <>();
8691
87- private final UpgradeHandler upgradeHandler ;
88-
89- private final DependencyHandler dependencyHandler ;
90-
91- private final Project project ;
92-
93- public BomExtension (DependencyHandler dependencyHandler , Project project ) {
94- this .dependencyHandler = dependencyHandler ;
95- this .upgradeHandler = project .getObjects ().newInstance (UpgradeHandler .class );
92+ public BomExtension (Project project ) {
9693 this .project = project ;
94+ this .upgradeHandler = project .getObjects ().newInstance (UpgradeHandler .class , project );
9795 }
9896
9997 public List <Library > getLibraries () {
@@ -105,8 +103,9 @@ public void upgrade(Action<UpgradeHandler> action) {
105103 }
106104
107105 public Upgrade getUpgrade () {
108- return new Upgrade (this .upgradeHandler .upgradePolicy , new GitHub (this .upgradeHandler .gitHub .organization ,
109- this .upgradeHandler .gitHub .repository , this .upgradeHandler .gitHub .issueLabels ));
106+ GitHubHandler gitHub = this .upgradeHandler .gitHub ;
107+ return new Upgrade (this .upgradeHandler .upgradePolicy ,
108+ new GitHub (gitHub .organization , gitHub .repository , gitHub .issueLabels ));
110109 }
111110
112111 public void library (String name , Action <LibraryHandler > action ) {
@@ -196,30 +195,38 @@ private void putArtifactVersionProperty(String groupId, String artifactId, Strin
196195 }
197196
198197 private void addLibrary (Library library ) {
198+ DependencyHandler dependencies = this .project .getDependencies ();
199199 this .libraries .add (library );
200200 String versionProperty = library .getVersionProperty ();
201201 if (versionProperty != null ) {
202202 this .properties .put (versionProperty , library .getVersion ().getVersion ());
203203 }
204204 for (Group group : library .getGroups ()) {
205205 for (Module module : group .getModules ()) {
206- putArtifactVersionProperty (group .getId (), module .getName (), module .getClassifier (), versionProperty );
207- this .dependencyHandler .getConstraints ()
208- .add (JavaPlatformPlugin .API_CONFIGURATION_NAME , createDependencyNotation (group .getId (),
209- module .getName (), library .getVersion ().getVersion ()));
206+ addModule (library , dependencies , versionProperty , group , module );
210207 }
211208 for (String bomImport : group .getBoms ()) {
212- putArtifactVersionProperty (group .getId (), bomImport , versionProperty );
213- String bomDependency = createDependencyNotation (group .getId (), bomImport ,
214- library .getVersion ().getVersion ());
215- this .dependencyHandler .add (JavaPlatformPlugin .API_CONFIGURATION_NAME ,
216- this .dependencyHandler .platform (bomDependency ));
217- this .dependencyHandler .add (BomPlugin .API_ENFORCED_CONFIGURATION_NAME ,
218- this .dependencyHandler .enforcedPlatform (bomDependency ));
209+ addBomImport (library , dependencies , versionProperty , group , bomImport );
219210 }
220211 }
221212 }
222213
214+ private void addModule (Library library , DependencyHandler dependencies , String versionProperty , Group group ,
215+ Module module ) {
216+ putArtifactVersionProperty (group .getId (), module .getName (), module .getClassifier (), versionProperty );
217+ String constraint = createDependencyNotation (group .getId (), module .getName (),
218+ library .getVersion ().getVersion ());
219+ dependencies .getConstraints ().add (JavaPlatformPlugin .API_CONFIGURATION_NAME , constraint );
220+ }
221+
222+ private void addBomImport (Library library , DependencyHandler dependencies , String versionProperty , Group group ,
223+ String bomImport ) {
224+ putArtifactVersionProperty (group .getId (), bomImport , versionProperty );
225+ String bomDependency = createDependencyNotation (group .getId (), bomImport , library .getVersion ().getVersion ());
226+ dependencies .add (JavaPlatformPlugin .API_CONFIGURATION_NAME , dependencies .platform (bomDependency ));
227+ dependencies .add (BomPlugin .API_ENFORCED_CONFIGURATION_NAME , dependencies .enforcedPlatform (bomDependency ));
228+ }
229+
223230 public static class LibraryHandler {
224231
225232 private final List <Group > groups = new ArrayList <>();
@@ -501,7 +508,12 @@ public static class UpgradeHandler {
501508
502509 private UpgradePolicy upgradePolicy ;
503510
504- private final GitHubHandler gitHub = new GitHubHandler ();
511+ private final GitHubHandler gitHub ;
512+
513+ @ Inject
514+ public UpgradeHandler (Project project ) {
515+ this .gitHub = new GitHubHandler (project );
516+ }
505517
506518 public void setPolicy (UpgradePolicy upgradePolicy ) {
507519 this .upgradePolicy = upgradePolicy ;
@@ -536,12 +548,18 @@ public GitHub getGitHub() {
536548
537549 public static class GitHubHandler {
538550
539- private String organization = "spring-projects" ;
551+ private String organization ;
540552
541- private String repository = "spring-boot" ;
553+ private String repository ;
542554
543555 private List <String > issueLabels ;
544556
557+ public GitHubHandler (Project project ) {
558+ BuildProperties buildProperties = BuildProperties .get (project );
559+ this .organization = buildProperties .gitHub ().organization ();
560+ this .repository = buildProperties .gitHub ().repository ();
561+ }
562+
545563 public void setOrganization (String organization ) {
546564 this .organization = organization ;
547565 }
@@ -558,9 +576,9 @@ public void setIssueLabels(List<String> issueLabels) {
558576
559577 public static final class GitHub {
560578
561- private String organization = "spring-projects" ;
579+ private String organization ;
562580
563- private String repository = "spring-boot" ;
581+ private String repository ;
564582
565583 private final List <String > issueLabels ;
566584
0 commit comments