Modified: maven/website/components/enforcer-archives/enforcer-LATEST/apidocs/src-html/org/apache/maven/enforcer/rules/RequirePluginVersions.html ============================================================================== --- maven/website/components/enforcer-archives/enforcer-LATEST/apidocs/src-html/org/apache/maven/enforcer/rules/RequirePluginVersions.html (original) +++ maven/website/components/enforcer-archives/enforcer-LATEST/apidocs/src-html/org/apache/maven/enforcer/rules/RequirePluginVersions.html Sat Jul 12 17:23:46 2025 @@ -376,584 +376,581 @@ <span class="source-line-no">363</span><span id="line-363"> /**</span> <span class="source-line-no">364</span><span id="line-364"> * Add the additional plugins if they don't exist yet.</span> <span class="source-line-no">365</span><span id="line-365"> *</span> -<span class="source-line-no">366</span><span id="line-366"> * @param existing the existing</span> -<span class="source-line-no">367</span><span id="line-367"> * @param additional the additional</span> -<span class="source-line-no">368</span><span id="line-368"> * @return the sets the</span> +<span class="source-line-no">366</span><span id="line-366"> * @param existing the existing plugins</span> +<span class="source-line-no">367</span><span id="line-367"> * @param additional the additional plugins</span> +<span class="source-line-no">368</span><span id="line-368"> * @return the additional and existing plugins</span> <span class="source-line-no">369</span><span id="line-369"> * @throws EnforcerRuleError the enforcer error</span> <span class="source-line-no">370</span><span id="line-370"> */</span> <span class="source-line-no">371</span><span id="line-371"> public Set<Plugin> addAdditionalPlugins(Set<Plugin> existing, List<String> additional) throws EnforcerRuleError {</span> <span class="source-line-no">372</span><span id="line-372"> if (additional != null) {</span> -<span class="source-line-no">373</span><span id="line-373"> for (String pluginString : additional) {</span> -<span class="source-line-no">374</span><span id="line-374"> Plugin plugin = parsePluginString(pluginString, "AdditionalPlugins");</span> -<span class="source-line-no">375</span><span id="line-375"></span> -<span class="source-line-no">376</span><span id="line-376"> if (existing == null) {</span> -<span class="source-line-no">377</span><span id="line-377"> existing = new HashSet<>();</span> -<span class="source-line-no">378</span><span id="line-378"> existing.add(plugin);</span> -<span class="source-line-no">379</span><span id="line-379"> } else if (!existing.contains(plugin)) {</span> -<span class="source-line-no">380</span><span id="line-380"> existing.add(plugin);</span> -<span class="source-line-no">381</span><span id="line-381"> }</span> -<span class="source-line-no">382</span><span id="line-382"> }</span> -<span class="source-line-no">383</span><span id="line-383"> }</span> -<span class="source-line-no">384</span><span id="line-384"> return existing;</span> -<span class="source-line-no">385</span><span id="line-385"> }</span> -<span class="source-line-no">386</span><span id="line-386"></span> -<span class="source-line-no">387</span><span id="line-387"> /**</span> -<span class="source-line-no">388</span><span id="line-388"> * Helper method to parse and inject a Plugin.</span> -<span class="source-line-no">389</span><span id="line-389"> *</span> -<span class="source-line-no">390</span><span id="line-390"> * @param pluginString a plugin description to parse</span> -<span class="source-line-no">391</span><span id="line-391"> * @param field a source of pluginString</span> -<span class="source-line-no">392</span><span id="line-392"> * @return the prepared plugin</span> -<span class="source-line-no">393</span><span id="line-393"> */</span> -<span class="source-line-no">394</span><span id="line-394"> private Plugin parsePluginString(String pluginString, String field) throws EnforcerRuleError {</span> -<span class="source-line-no">395</span><span id="line-395"> if (pluginString != null) {</span> -<span class="source-line-no">396</span><span id="line-396"> String[] pluginStrings = pluginString.split(":");</span> -<span class="source-line-no">397</span><span id="line-397"> if (pluginStrings.length == 2) {</span> -<span class="source-line-no">398</span><span id="line-398"> Plugin plugin = new Plugin();</span> -<span class="source-line-no">399</span><span id="line-399"> plugin.setGroupId(StringUtils.strip(pluginStrings[0]));</span> -<span class="source-line-no">400</span><span id="line-400"> plugin.setArtifactId(StringUtils.strip(pluginStrings[1]));</span> -<span class="source-line-no">401</span><span id="line-401"></span> -<span class="source-line-no">402</span><span id="line-402"> return plugin;</span> -<span class="source-line-no">403</span><span id="line-403"> } else {</span> -<span class="source-line-no">404</span><span id="line-404"> throw new EnforcerRuleError("Invalid " + field + " string: " + pluginString);</span> -<span class="source-line-no">405</span><span id="line-405"> }</span> -<span class="source-line-no">406</span><span id="line-406"> } else {</span> -<span class="source-line-no">407</span><span id="line-407"> throw new EnforcerRuleError("Invalid " + field + " string: " + pluginString);</span> -<span class="source-line-no">408</span><span id="line-408"> }</span> -<span class="source-line-no">409</span><span id="line-409"> }</span> -<span class="source-line-no">410</span><span id="line-410"></span> -<span class="source-line-no">411</span><span id="line-411"> /**</span> -<span class="source-line-no">412</span><span id="line-412"> * Finds the plugins that are listed in active profiles.</span> -<span class="source-line-no">413</span><span id="line-413"> *</span> -<span class="source-line-no">414</span><span id="line-414"> * @param project the project</span> -<span class="source-line-no">415</span><span id="line-415"> * @return the profile plugins</span> -<span class="source-line-no">416</span><span id="line-416"> */</span> -<span class="source-line-no">417</span><span id="line-417"> public Set<Plugin> getProfilePlugins(MavenProject project) {</span> -<span class="source-line-no">418</span><span id="line-418"> Set<Plugin> result = new HashSet<>();</span> -<span class="source-line-no">419</span><span id="line-419"> List<Profile> profiles = project.getActiveProfiles();</span> -<span class="source-line-no">420</span><span id="line-420"> if (profiles != null && !profiles.isEmpty()) {</span> -<span class="source-line-no">421</span><span id="line-421"> for (Profile p : profiles) {</span> -<span class="source-line-no">422</span><span id="line-422"> BuildBase b = p.getBuild();</span> -<span class="source-line-no">423</span><span id="line-423"> if (b != null) {</span> -<span class="source-line-no">424</span><span id="line-424"> List<Plugin> plugins = b.getPlugins();</span> -<span class="source-line-no">425</span><span id="line-425"> if (plugins != null) {</span> -<span class="source-line-no">426</span><span id="line-426"> result.addAll(plugins);</span> -<span class="source-line-no">427</span><span id="line-427"> }</span> -<span class="source-line-no">428</span><span id="line-428"> }</span> -<span class="source-line-no">429</span><span id="line-429"> }</span> -<span class="source-line-no">430</span><span id="line-430"> }</span> -<span class="source-line-no">431</span><span id="line-431"> return result;</span> -<span class="source-line-no">432</span><span id="line-432"> }</span> -<span class="source-line-no">433</span><span id="line-433"></span> -<span class="source-line-no">434</span><span id="line-434"> /**</span> -<span class="source-line-no">435</span><span id="line-435"> * Given a plugin, this will retrieve the matching plugin artifact from the model.</span> -<span class="source-line-no">436</span><span id="line-436"> *</span> -<span class="source-line-no">437</span><span id="line-437"> * @param plugin plugin to lookup</span> -<span class="source-line-no">438</span><span id="line-438"> * @param project project to search</span> -<span class="source-line-no">439</span><span id="line-439"> * @return matching plugin, <code>null</code> if not found.</span> -<span class="source-line-no">440</span><span id="line-440"> */</span> -<span class="source-line-no">441</span><span id="line-441"> private Plugin findCurrentPlugin(Plugin plugin, MavenProject project) throws EnforcerRuleException {</span> -<span class="source-line-no">442</span><span id="line-442"> Plugin found = null;</span> -<span class="source-line-no">443</span><span id="line-443"> try {</span> -<span class="source-line-no">444</span><span id="line-444"> Model model = project.getModel();</span> -<span class="source-line-no">445</span><span id="line-445"> Map<String, Plugin> plugins = model.getBuild().getPluginsAsMap();</span> -<span class="source-line-no">446</span><span id="line-446"> found = plugins.get(plugin.getKey());</span> -<span class="source-line-no">447</span><span id="line-447"> } catch (NullPointerException e) {</span> -<span class="source-line-no">448</span><span id="line-448"> // nothing to do here</span> -<span class="source-line-no">449</span><span id="line-449"> }</span> -<span class="source-line-no">450</span><span id="line-450"></span> -<span class="source-line-no">451</span><span id="line-451"> if (found == null) {</span> -<span class="source-line-no">452</span><span id="line-452"> Artifact artifact = factory.createPluginArtifact(</span> -<span class="source-line-no">453</span><span id="line-453"> plugin.getGroupId(), plugin.getArtifactId(), VersionRange.createFromVersion("LATEST"));</span> -<span class="source-line-no">454</span><span id="line-454"></span> -<span class="source-line-no">455</span><span id="line-455"> try {</span> -<span class="source-line-no">456</span><span id="line-456"> repositorySystem.resolveArtifact(</span> -<span class="source-line-no">457</span><span id="line-457"> session.getRepositorySession(),</span> -<span class="source-line-no">458</span><span id="line-458"> new ArtifactRequest(</span> -<span class="source-line-no">459</span><span id="line-459"> RepositoryUtils.toArtifact(artifact),</span> -<span class="source-line-no">460</span><span id="line-460"> session.getCurrentProject().getRemotePluginRepositories(),</span> -<span class="source-line-no">461</span><span id="line-461"> "resolvePlugin"));</span> -<span class="source-line-no">462</span><span id="line-462"> } catch (ArtifactResolutionException e) {</span> -<span class="source-line-no">463</span><span id="line-463"> throw new EnforcerRuleException("Unable to resolve the plugin " + artifact.getArtifactId(), e);</span> -<span class="source-line-no">464</span><span id="line-464"> }</span> -<span class="source-line-no">465</span><span id="line-465"> plugin.setVersion(artifact.getVersion());</span> +<span class="source-line-no">373</span><span id="line-373"> if (existing == null) {</span> +<span class="source-line-no">374</span><span id="line-374"> existing = new HashSet<>();</span> +<span class="source-line-no">375</span><span id="line-375"> }</span> +<span class="source-line-no">376</span><span id="line-376"> for (String pluginString : additional) {</span> +<span class="source-line-no">377</span><span id="line-377"> Plugin plugin = parsePluginString(pluginString, "AdditionalPlugins");</span> +<span class="source-line-no">378</span><span id="line-378"> existing.add(plugin);</span> +<span class="source-line-no">379</span><span id="line-379"> }</span> +<span class="source-line-no">380</span><span id="line-380"> }</span> +<span class="source-line-no">381</span><span id="line-381"> return existing;</span> +<span class="source-line-no">382</span><span id="line-382"> }</span> +<span class="source-line-no">383</span><span id="line-383"></span> +<span class="source-line-no">384</span><span id="line-384"> /**</span> +<span class="source-line-no">385</span><span id="line-385"> * Helper method to parse and inject a Plugin.</span> +<span class="source-line-no">386</span><span id="line-386"> *</span> +<span class="source-line-no">387</span><span id="line-387"> * @param pluginString a plugin description to parse</span> +<span class="source-line-no">388</span><span id="line-388"> * @param field a source of pluginString</span> +<span class="source-line-no">389</span><span id="line-389"> * @return the prepared plugin</span> +<span class="source-line-no">390</span><span id="line-390"> */</span> +<span class="source-line-no">391</span><span id="line-391"> private Plugin parsePluginString(String pluginString, String field) throws EnforcerRuleError {</span> +<span class="source-line-no">392</span><span id="line-392"> if (pluginString != null) {</span> +<span class="source-line-no">393</span><span id="line-393"> String[] pluginStrings = pluginString.split(":");</span> +<span class="source-line-no">394</span><span id="line-394"> if (pluginStrings.length == 2) {</span> +<span class="source-line-no">395</span><span id="line-395"> Plugin plugin = new Plugin();</span> +<span class="source-line-no">396</span><span id="line-396"> plugin.setGroupId(StringUtils.strip(pluginStrings[0]));</span> +<span class="source-line-no">397</span><span id="line-397"> plugin.setArtifactId(StringUtils.strip(pluginStrings[1]));</span> +<span class="source-line-no">398</span><span id="line-398"></span> +<span class="source-line-no">399</span><span id="line-399"> return plugin;</span> +<span class="source-line-no">400</span><span id="line-400"> } else {</span> +<span class="source-line-no">401</span><span id="line-401"> throw new EnforcerRuleError("Invalid " + field + " string: " + pluginString);</span> +<span class="source-line-no">402</span><span id="line-402"> }</span> +<span class="source-line-no">403</span><span id="line-403"> } else {</span> +<span class="source-line-no">404</span><span id="line-404"> throw new EnforcerRuleError("Invalid " + field + " null plugin string.");</span> +<span class="source-line-no">405</span><span id="line-405"> }</span> +<span class="source-line-no">406</span><span id="line-406"> }</span> +<span class="source-line-no">407</span><span id="line-407"></span> +<span class="source-line-no">408</span><span id="line-408"> /**</span> +<span class="source-line-no">409</span><span id="line-409"> * Finds the plugins that are listed in active profiles.</span> +<span class="source-line-no">410</span><span id="line-410"> *</span> +<span class="source-line-no">411</span><span id="line-411"> * @param project the project</span> +<span class="source-line-no">412</span><span id="line-412"> * @return the profile plugins</span> +<span class="source-line-no">413</span><span id="line-413"> */</span> +<span class="source-line-no">414</span><span id="line-414"> public Set<Plugin> getProfilePlugins(MavenProject project) {</span> +<span class="source-line-no">415</span><span id="line-415"> Set<Plugin> result = new HashSet<>();</span> +<span class="source-line-no">416</span><span id="line-416"> List<Profile> profiles = project.getActiveProfiles();</span> +<span class="source-line-no">417</span><span id="line-417"> if (profiles != null && !profiles.isEmpty()) {</span> +<span class="source-line-no">418</span><span id="line-418"> for (Profile p : profiles) {</span> +<span class="source-line-no">419</span><span id="line-419"> BuildBase b = p.getBuild();</span> +<span class="source-line-no">420</span><span id="line-420"> if (b != null) {</span> +<span class="source-line-no">421</span><span id="line-421"> List<Plugin> plugins = b.getPlugins();</span> +<span class="source-line-no">422</span><span id="line-422"> if (plugins != null) {</span> +<span class="source-line-no">423</span><span id="line-423"> result.addAll(plugins);</span> +<span class="source-line-no">424</span><span id="line-424"> }</span> +<span class="source-line-no">425</span><span id="line-425"> }</span> +<span class="source-line-no">426</span><span id="line-426"> }</span> +<span class="source-line-no">427</span><span id="line-427"> }</span> +<span class="source-line-no">428</span><span id="line-428"> return result;</span> +<span class="source-line-no">429</span><span id="line-429"> }</span> +<span class="source-line-no">430</span><span id="line-430"></span> +<span class="source-line-no">431</span><span id="line-431"> /**</span> +<span class="source-line-no">432</span><span id="line-432"> * Given a plugin, this will retrieve the matching plugin artifact from the model.</span> +<span class="source-line-no">433</span><span id="line-433"> *</span> +<span class="source-line-no">434</span><span id="line-434"> * @param plugin plugin to lookup</span> +<span class="source-line-no">435</span><span id="line-435"> * @param project project to search</span> +<span class="source-line-no">436</span><span id="line-436"> * @return matching plugin, <code>null</code> if not found.</span> +<span class="source-line-no">437</span><span id="line-437"> */</span> +<span class="source-line-no">438</span><span id="line-438"> private Plugin findCurrentPlugin(Plugin plugin, MavenProject project) throws EnforcerRuleException {</span> +<span class="source-line-no">439</span><span id="line-439"> Plugin found = null;</span> +<span class="source-line-no">440</span><span id="line-440"> try {</span> +<span class="source-line-no">441</span><span id="line-441"> Model model = project.getModel();</span> +<span class="source-line-no">442</span><span id="line-442"> Map<String, Plugin> plugins = model.getBuild().getPluginsAsMap();</span> +<span class="source-line-no">443</span><span id="line-443"> found = plugins.get(plugin.getKey());</span> +<span class="source-line-no">444</span><span id="line-444"> } catch (NullPointerException e) {</span> +<span class="source-line-no">445</span><span id="line-445"> // nothing to do here</span> +<span class="source-line-no">446</span><span id="line-446"> }</span> +<span class="source-line-no">447</span><span id="line-447"></span> +<span class="source-line-no">448</span><span id="line-448"> if (found == null) {</span> +<span class="source-line-no">449</span><span id="line-449"> Artifact artifact = factory.createPluginArtifact(</span> +<span class="source-line-no">450</span><span id="line-450"> plugin.getGroupId(), plugin.getArtifactId(), VersionRange.createFromVersion("LATEST"));</span> +<span class="source-line-no">451</span><span id="line-451"></span> +<span class="source-line-no">452</span><span id="line-452"> try {</span> +<span class="source-line-no">453</span><span id="line-453"> repositorySystem.resolveArtifact(</span> +<span class="source-line-no">454</span><span id="line-454"> session.getRepositorySession(),</span> +<span class="source-line-no">455</span><span id="line-455"> new ArtifactRequest(</span> +<span class="source-line-no">456</span><span id="line-456"> RepositoryUtils.toArtifact(artifact),</span> +<span class="source-line-no">457</span><span id="line-457"> session.getCurrentProject().getRemotePluginRepositories(),</span> +<span class="source-line-no">458</span><span id="line-458"> "resolvePlugin"));</span> +<span class="source-line-no">459</span><span id="line-459"> } catch (ArtifactResolutionException e) {</span> +<span class="source-line-no">460</span><span id="line-460"> throw new EnforcerRuleException("Unable to resolve the plugin " + artifact.getArtifactId(), e);</span> +<span class="source-line-no">461</span><span id="line-461"> }</span> +<span class="source-line-no">462</span><span id="line-462"> plugin.setVersion(artifact.getVersion());</span> +<span class="source-line-no">463</span><span id="line-463"></span> +<span class="source-line-no">464</span><span id="line-464"> found = plugin;</span> +<span class="source-line-no">465</span><span id="line-465"> }</span> <span class="source-line-no">466</span><span id="line-466"></span> -<span class="source-line-no">467</span><span id="line-467"> found = plugin;</span> -<span class="source-line-no">468</span><span id="line-468"> }</span> +<span class="source-line-no">467</span><span id="line-467"> return found;</span> +<span class="source-line-no">468</span><span id="line-468"> }</span> <span class="source-line-no">469</span><span id="line-469"></span> -<span class="source-line-no">470</span><span id="line-470"> return found;</span> -<span class="source-line-no">471</span><span id="line-471"> }</span> -<span class="source-line-no">472</span><span id="line-472"></span> -<span class="source-line-no">473</span><span id="line-473"> /**</span> -<span class="source-line-no">474</span><span id="line-474"> * Gets the plugins that are bound to the defined phases. This does not find plugins bound in the pom to a phase</span> -<span class="source-line-no">475</span><span id="line-475"> * later than the plugin is executing.</span> -<span class="source-line-no">476</span><span id="line-476"> *</span> -<span class="source-line-no">477</span><span id="line-477"> * @param project the project</span> -<span class="source-line-no">478</span><span id="line-478"> * @param thePhases the phases</span> -<span class="source-line-no">479</span><span id="line-479"> * @return the bound plugins</span> -<span class="source-line-no">480</span><span id="line-480"> * @throws PluginNotFoundException the plugin not found exception</span> -<span class="source-line-no">481</span><span id="line-481"> * @throws LifecycleExecutionException the lifecycle execution exception</span> -<span class="source-line-no">482</span><span id="line-482"> */</span> -<span class="source-line-no">483</span><span id="line-483"> private Set<Plugin> getBoundPlugins(MavenProject project, String thePhases)</span> -<span class="source-line-no">484</span><span id="line-484"> throws PluginNotFoundException, LifecycleExecutionException {</span> -<span class="source-line-no">485</span><span id="line-485"></span> -<span class="source-line-no">486</span><span id="line-486"> Set<Plugin> allPlugins = new HashSet<>();</span> -<span class="source-line-no">487</span><span id="line-487"></span> -<span class="source-line-no">488</span><span id="line-488"> // lookup the bindings for all the passed in phases</span> -<span class="source-line-no">489</span><span id="line-489"> String[] lifecyclePhases = thePhases.split(",");</span> -<span class="source-line-no">490</span><span id="line-490"> for (int i = 0; i < lifecyclePhases.length; i++) {</span> -<span class="source-line-no">491</span><span id="line-491"> String lifecyclePhase = lifecyclePhases[i];</span> -<span class="source-line-no">492</span><span id="line-492"> if (lifecyclePhase != null && !lifecyclePhase.isEmpty()) {</span> -<span class="source-line-no">493</span><span id="line-493"> try {</span> -<span class="source-line-no">494</span><span id="line-494"> Lifecycle lifecycle = getLifecycleForPhase(lifecyclePhase);</span> -<span class="source-line-no">495</span><span id="line-495"> getLog().debug("getBoundPlugins(): " + project.getId() + " " + lifecyclePhase + " "</span> -<span class="source-line-no">496</span><span id="line-496"> + lifecycle.getId());</span> -<span class="source-line-no">497</span><span id="line-497"> allPlugins.addAll(getAllPlugins(project, lifecycle));</span> -<span class="source-line-no">498</span><span id="line-498"> } catch (BuildFailureException e) {</span> -<span class="source-line-no">499</span><span id="line-499"> // i'm going to swallow this because the</span> -<span class="source-line-no">500</span><span id="line-500"> // user may have declared a phase that</span> -<span class="source-line-no">501</span><span id="line-501"> // doesn't exist for every module.</span> -<span class="source-line-no">502</span><span id="line-502"> }</span> -<span class="source-line-no">503</span><span id="line-503"> }</span> -<span class="source-line-no">504</span><span id="line-504"> }</span> -<span class="source-line-no">505</span><span id="line-505"> return allPlugins;</span> -<span class="source-line-no">506</span><span id="line-506"> }</span> -<span class="source-line-no">507</span><span id="line-507"></span> -<span class="source-line-no">508</span><span id="line-508"> /**</span> -<span class="source-line-no">509</span><span id="line-509"> * Checks for valid version specified. Checks to see if the version is specified for the plugin. Can optionally ban</span> -<span class="source-line-no">510</span><span id="line-510"> * "RELEASE" or "LATEST" even if specified.</span> -<span class="source-line-no">511</span><span id="line-511"> *</span> -<span class="source-line-no">512</span><span id="line-512"> * @param source the source</span> -<span class="source-line-no">513</span><span id="line-513"> * @param pluginWrappers the plugins</span> -<span class="source-line-no">514</span><span id="line-514"> * @return true, if successful</span> -<span class="source-line-no">515</span><span id="line-515"> */</span> -<span class="source-line-no">516</span><span id="line-516"> public boolean hasValidVersionSpecified(Plugin source, List<PluginWrapper> pluginWrappers) {</span> -<span class="source-line-no">517</span><span id="line-517"> boolean found = false;</span> -<span class="source-line-no">518</span><span id="line-518"> boolean status = false;</span> -<span class="source-line-no">519</span><span id="line-519"> for (PluginWrapper plugin : pluginWrappers) {</span> -<span class="source-line-no">520</span><span id="line-520"> // find the matching plugin entry</span> -<span class="source-line-no">521</span><span id="line-521"> if (isMatchingPlugin(source, plugin)) {</span> -<span class="source-line-no">522</span><span id="line-522"> found = true;</span> -<span class="source-line-no">523</span><span id="line-523"> // found the entry. now see if the version is specified</span> -<span class="source-line-no">524</span><span id="line-524"> String version = plugin.getVersion();</span> -<span class="source-line-no">525</span><span id="line-525"> try {</span> -<span class="source-line-no">526</span><span id="line-526"> version = (String) evaluator.evaluate(version);</span> -<span class="source-line-no">527</span><span id="line-527"> } catch (ExpressionEvaluationException e) {</span> -<span class="source-line-no">528</span><span id="line-528"> return false;</span> -<span class="source-line-no">529</span><span id="line-529"> }</span> -<span class="source-line-no">530</span><span id="line-530"></span> -<span class="source-line-no">531</span><span id="line-531"> if (isValidVersion(version)) {</span> -<span class="source-line-no">532</span><span id="line-532"> getLog().debug("checking for notEmpty and notIsWhitespace(): " + version);</span> -<span class="source-line-no">533</span><span id="line-533"> if (banRelease && version.equals("RELEASE")) {</span> -<span class="source-line-no">534</span><span id="line-534"> return false;</span> -<span class="source-line-no">535</span><span id="line-535"> }</span> -<span class="source-line-no">536</span><span id="line-536"></span> -<span class="source-line-no">537</span><span id="line-537"> if (banLatest && version.equals("LATEST")) {</span> -<span class="source-line-no">538</span><span id="line-538"> return false;</span> -<span class="source-line-no">539</span><span id="line-539"> }</span> -<span class="source-line-no">540</span><span id="line-540"></span> -<span class="source-line-no">541</span><span id="line-541"> if (banSnapshots && isSnapshot(version)) {</span> -<span class="source-line-no">542</span><span id="line-542"> return false;</span> -<span class="source-line-no">543</span><span id="line-543"> }</span> -<span class="source-line-no">544</span><span id="line-544"> // the version was specified and not</span> -<span class="source-line-no">545</span><span id="line-545"> // banned. It's ok. Keep looking through the list to make</span> -<span class="source-line-no">546</span><span id="line-546"> // sure it's not using a banned version somewhere else.</span> -<span class="source-line-no">547</span><span id="line-547"></span> -<span class="source-line-no">548</span><span id="line-548"> status = true;</span> -<span class="source-line-no">549</span><span id="line-549"></span> -<span class="source-line-no">550</span><span id="line-550"> if (!banRelease && !banLatest && !banSnapshots) {</span> -<span class="source-line-no">551</span><span id="line-551"> // no need to keep looking</span> -<span class="source-line-no">552</span><span id="line-552"> break;</span> -<span class="source-line-no">553</span><span id="line-553"> }</span> -<span class="source-line-no">554</span><span id="line-554"> }</span> -<span class="source-line-no">555</span><span id="line-555"> }</span> +<span class="source-line-no">470</span><span id="line-470"> /**</span> +<span class="source-line-no">471</span><span id="line-471"> * Gets the plugins that are bound to the defined phases. This does not find plugins bound in the pom to a phase</span> +<span class="source-line-no">472</span><span id="line-472"> * later than the plugin is executing.</span> +<span class="source-line-no">473</span><span id="line-473"> *</span> +<span class="source-line-no">474</span><span id="line-474"> * @param project the project</span> +<span class="source-line-no">475</span><span id="line-475"> * @param phases the phases</span> +<span class="source-line-no">476</span><span id="line-476"> * @return the bound plugins</span> +<span class="source-line-no">477</span><span id="line-477"> * @throws PluginNotFoundException the plugin not found exception</span> +<span class="source-line-no">478</span><span id="line-478"> * @throws LifecycleExecutionException the lifecycle execution exception</span> +<span class="source-line-no">479</span><span id="line-479"> */</span> +<span class="source-line-no">480</span><span id="line-480"> private Set<Plugin> getBoundPlugins(MavenProject project, String phases)</span> +<span class="source-line-no">481</span><span id="line-481"> throws PluginNotFoundException, LifecycleExecutionException {</span> +<span class="source-line-no">482</span><span id="line-482"></span> +<span class="source-line-no">483</span><span id="line-483"> Set<Plugin> allPlugins = new HashSet<>();</span> +<span class="source-line-no">484</span><span id="line-484"></span> +<span class="source-line-no">485</span><span id="line-485"> // lookup the bindings for all the passed in phases</span> +<span class="source-line-no">486</span><span id="line-486"> String[] lifecyclePhases = phases.split(",");</span> +<span class="source-line-no">487</span><span id="line-487"> for (int i = 0; i < lifecyclePhases.length; i++) {</span> +<span class="source-line-no">488</span><span id="line-488"> String lifecyclePhase = lifecyclePhases[i];</span> +<span class="source-line-no">489</span><span id="line-489"> if (lifecyclePhase != null && !lifecyclePhase.isEmpty()) {</span> +<span class="source-line-no">490</span><span id="line-490"> try {</span> +<span class="source-line-no">491</span><span id="line-491"> Lifecycle lifecycle = getLifecycleForPhase(lifecyclePhase);</span> +<span class="source-line-no">492</span><span id="line-492"> getLog().debug("getBoundPlugins(): " + project.getId() + " " + lifecyclePhase + " "</span> +<span class="source-line-no">493</span><span id="line-493"> + lifecycle.getId());</span> +<span class="source-line-no">494</span><span id="line-494"> allPlugins.addAll(getAllPlugins(project, lifecycle));</span> +<span class="source-line-no">495</span><span id="line-495"> } catch (BuildFailureException e) {</span> +<span class="source-line-no">496</span><span id="line-496"> // swallow this because the</span> +<span class="source-line-no">497</span><span id="line-497"> // user may have declared a phase that</span> +<span class="source-line-no">498</span><span id="line-498"> // doesn't exist for every module.</span> +<span class="source-line-no">499</span><span id="line-499"> }</span> +<span class="source-line-no">500</span><span id="line-500"> }</span> +<span class="source-line-no">501</span><span id="line-501"> }</span> +<span class="source-line-no">502</span><span id="line-502"> return allPlugins;</span> +<span class="source-line-no">503</span><span id="line-503"> }</span> +<span class="source-line-no">504</span><span id="line-504"></span> +<span class="source-line-no">505</span><span id="line-505"> /**</span> +<span class="source-line-no">506</span><span id="line-506"> * Checks for valid version specified. Checks to see if the version is specified for the plugin. Can optionally ban</span> +<span class="source-line-no">507</span><span id="line-507"> * "RELEASE" or "LATEST" even if specified.</span> +<span class="source-line-no">508</span><span id="line-508"> *</span> +<span class="source-line-no">509</span><span id="line-509"> * @param source the source</span> +<span class="source-line-no">510</span><span id="line-510"> * @param pluginWrappers the plugins</span> +<span class="source-line-no">511</span><span id="line-511"> * @return true, if successful</span> +<span class="source-line-no">512</span><span id="line-512"> */</span> +<span class="source-line-no">513</span><span id="line-513"> public boolean hasValidVersionSpecified(Plugin source, List<PluginWrapper> pluginWrappers) {</span> +<span class="source-line-no">514</span><span id="line-514"> boolean found = false;</span> +<span class="source-line-no">515</span><span id="line-515"> boolean status = false;</span> +<span class="source-line-no">516</span><span id="line-516"> for (PluginWrapper plugin : pluginWrappers) {</span> +<span class="source-line-no">517</span><span id="line-517"> // find the matching plugin entry</span> +<span class="source-line-no">518</span><span id="line-518"> if (isMatchingPlugin(source, plugin)) {</span> +<span class="source-line-no">519</span><span id="line-519"> found = true;</span> +<span class="source-line-no">520</span><span id="line-520"> // found the entry. now see if the version is specified</span> +<span class="source-line-no">521</span><span id="line-521"> String version = plugin.getVersion();</span> +<span class="source-line-no">522</span><span id="line-522"> try {</span> +<span class="source-line-no">523</span><span id="line-523"> version = (String) evaluator.evaluate(version);</span> +<span class="source-line-no">524</span><span id="line-524"> } catch (ExpressionEvaluationException e) {</span> +<span class="source-line-no">525</span><span id="line-525"> return false;</span> +<span class="source-line-no">526</span><span id="line-526"> }</span> +<span class="source-line-no">527</span><span id="line-527"></span> +<span class="source-line-no">528</span><span id="line-528"> if (isValidVersion(version)) {</span> +<span class="source-line-no">529</span><span id="line-529"> getLog().debug("checking for notEmpty and notIsWhitespace(): " + version);</span> +<span class="source-line-no">530</span><span id="line-530"> if (banRelease && version.equals("RELEASE")) {</span> +<span class="source-line-no">531</span><span id="line-531"> return false;</span> +<span class="source-line-no">532</span><span id="line-532"> }</span> +<span class="source-line-no">533</span><span id="line-533"></span> +<span class="source-line-no">534</span><span id="line-534"> if (banLatest && version.equals("LATEST")) {</span> +<span class="source-line-no">535</span><span id="line-535"> return false;</span> +<span class="source-line-no">536</span><span id="line-536"> }</span> +<span class="source-line-no">537</span><span id="line-537"></span> +<span class="source-line-no">538</span><span id="line-538"> if (banSnapshots && isSnapshot(version)) {</span> +<span class="source-line-no">539</span><span id="line-539"> return false;</span> +<span class="source-line-no">540</span><span id="line-540"> }</span> +<span class="source-line-no">541</span><span id="line-541"> // the version was specified and not</span> +<span class="source-line-no">542</span><span id="line-542"> // banned. It's ok. Keep looking through the list to make</span> +<span class="source-line-no">543</span><span id="line-543"> // sure it's not using a banned version somewhere else.</span> +<span class="source-line-no">544</span><span id="line-544"></span> +<span class="source-line-no">545</span><span id="line-545"> status = true;</span> +<span class="source-line-no">546</span><span id="line-546"></span> +<span class="source-line-no">547</span><span id="line-547"> if (!banRelease && !banLatest && !banSnapshots) {</span> +<span class="source-line-no">548</span><span id="line-548"> // no need to keep looking</span> +<span class="source-line-no">549</span><span id="line-549"> break;</span> +<span class="source-line-no">550</span><span id="line-550"> }</span> +<span class="source-line-no">551</span><span id="line-551"> }</span> +<span class="source-line-no">552</span><span id="line-552"> }</span> +<span class="source-line-no">553</span><span id="line-553"> }</span> +<span class="source-line-no">554</span><span id="line-554"> if (!found) {</span> +<span class="source-line-no">555</span><span id="line-555"> getLog().debug("plugin " + source.getGroupId() + ":" + source.getArtifactId() + " not found");</span> <span class="source-line-no">556</span><span id="line-556"> }</span> -<span class="source-line-no">557</span><span id="line-557"> if (!found) {</span> -<span class="source-line-no">558</span><span id="line-558"> getLog().debug("plugin " + source.getGroupId() + ":" + source.getArtifactId() + " not found");</span> -<span class="source-line-no">559</span><span id="line-559"> }</span> -<span class="source-line-no">560</span><span id="line-560"> return status;</span> -<span class="source-line-no">561</span><span id="line-561"> }</span> -<span class="source-line-no">562</span><span id="line-562"></span> -<span class="source-line-no">563</span><span id="line-563"> private boolean isValidVersion(String version) {</span> -<span class="source-line-no">564</span><span id="line-564"> return (version != null && !version.isEmpty()) && !StringUtils.isWhitespace(version);</span> -<span class="source-line-no">565</span><span id="line-565"> }</span> -<span class="source-line-no">566</span><span id="line-566"></span> -<span class="source-line-no">567</span><span id="line-567"> private boolean isMatchingPlugin(Plugin source, PluginWrapper plugin) {</span> -<span class="source-line-no">568</span><span id="line-568"> return source.getArtifactId().equals(plugin.getArtifactId())</span> -<span class="source-line-no">569</span><span id="line-569"> && source.getGroupId().equals(plugin.getGroupId());</span> -<span class="source-line-no">570</span><span id="line-570"> }</span> -<span class="source-line-no">571</span><span id="line-571"></span> -<span class="source-line-no">572</span><span id="line-572"> /**</span> -<span class="source-line-no">573</span><span id="line-573"> * Checks if is snapshot.</span> -<span class="source-line-no">574</span><span id="line-574"> *</span> -<span class="source-line-no">575</span><span id="line-575"> * @param baseVersion the base version</span> -<span class="source-line-no">576</span><span id="line-576"> * @return true, if is snapshot</span> -<span class="source-line-no">577</span><span id="line-577"> */</span> -<span class="source-line-no">578</span><span id="line-578"> private boolean isSnapshot(String baseVersion) {</span> -<span class="source-line-no">579</span><span id="line-579"> if (banTimestamps) {</span> -<span class="source-line-no">580</span><span id="line-580"> return Artifact.VERSION_FILE_PATTERN.matcher(baseVersion).matches()</span> -<span class="source-line-no">581</span><span id="line-581"> || baseVersion.endsWith(Artifact.SNAPSHOT_VERSION);</span> -<span class="source-line-no">582</span><span id="line-582"> } else {</span> -<span class="source-line-no">583</span><span id="line-583"> return baseVersion.endsWith(Artifact.SNAPSHOT_VERSION);</span> -<span class="source-line-no">584</span><span id="line-584"> }</span> -<span class="source-line-no">585</span><span id="line-585"> }</span> -<span class="source-line-no">586</span><span id="line-586"></span> -<span class="source-line-no">587</span><span id="line-587"> /*</span> -<span class="source-line-no">588</span><span id="line-588"> * Uses borrowed lifecycle code to get a list of all plugins bound to the lifecycle.</span> -<span class="source-line-no">589</span><span id="line-589"> */</span> -<span class="source-line-no">590</span><span id="line-590"></span> -<span class="source-line-no">591</span><span id="line-591"> /**</span> -<span class="source-line-no">592</span><span id="line-592"> * Gets the all plugins.</span> -<span class="source-line-no">593</span><span id="line-593"> *</span> -<span class="source-line-no">594</span><span id="line-594"> * @param project the project</span> -<span class="source-line-no">595</span><span id="line-595"> * @param lifecycle the lifecycle</span> -<span class="source-line-no">596</span><span id="line-596"> * @return the all plugins</span> -<span class="source-line-no">597</span><span id="line-597"> * @throws PluginNotFoundException the plugin not found exception</span> -<span class="source-line-no">598</span><span id="line-598"> * @throws LifecycleExecutionException the lifecycle execution exception</span> -<span class="source-line-no">599</span><span id="line-599"> */</span> -<span class="source-line-no">600</span><span id="line-600"> private Set<Plugin> getAllPlugins(MavenProject project, Lifecycle lifecycle)</span> -<span class="source-line-no">601</span><span id="line-601"> throws PluginNotFoundException, LifecycleExecutionException {</span> -<span class="source-line-no">602</span><span id="line-602"></span> -<span class="source-line-no">603</span><span id="line-603"> getLog().debug("RequirePluginVersions.getAllPlugins:");</span> -<span class="source-line-no">604</span><span id="line-604"></span> -<span class="source-line-no">605</span><span id="line-605"> Set<Plugin> plugins = new HashSet<>();</span> -<span class="source-line-no">606</span><span id="line-606"> // first, bind those associated with the packaging</span> -<span class="source-line-no">607</span><span id="line-607"> Map<String, String> mappings = findMappingsForLifecycle(project, lifecycle);</span> -<span class="source-line-no">608</span><span id="line-608"></span> -<span class="source-line-no">609</span><span id="line-609"> for (Map.Entry<String, String> entry : mappings.entrySet()) {</span> -<span class="source-line-no">610</span><span id="line-610"> getLog().debug(" lifecycleMapping = " + entry.getKey());</span> -<span class="source-line-no">611</span><span id="line-611"> String pluginsForLifecycle = entry.getValue();</span> -<span class="source-line-no">612</span><span id="line-612"> getLog().debug(" plugins = " + pluginsForLifecycle);</span> -<span class="source-line-no">613</span><span id="line-613"> if (pluginsForLifecycle != null && !pluginsForLifecycle.isEmpty()) {</span> -<span class="source-line-no">614</span><span id="line-614"> String pluginList[] = pluginsForLifecycle.split(",");</span> -<span class="source-line-no">615</span><span id="line-615"> for (String plugin : pluginList) {</span> -<span class="source-line-no">616</span><span id="line-616"> plugin = StringUtils.strip(plugin);</span> -<span class="source-line-no">617</span><span id="line-617"> getLog().debug(" plugin = " + plugin);</span> -<span class="source-line-no">618</span><span id="line-618"> String tokens[] = plugin.split(":");</span> -<span class="source-line-no">619</span><span id="line-619"> getLog().debug(" GAV = " + Arrays.asList(tokens));</span> -<span class="source-line-no">620</span><span id="line-620"></span> -<span class="source-line-no">621</span><span id="line-621"> Plugin p = new Plugin();</span> -<span class="source-line-no">622</span><span id="line-622"> p.setGroupId(tokens[0]);</span> -<span class="source-line-no">623</span><span id="line-623"> p.setArtifactId(tokens[1]);</span> -<span class="source-line-no">624</span><span id="line-624"> plugins.add(p);</span> -<span class="source-line-no">625</span><span id="line-625"> }</span> -<span class="source-line-no">626</span><span id="line-626"> }</span> -<span class="source-line-no">627</span><span id="line-627"> }</span> -<span class="source-line-no">628</span><span id="line-628"></span> -<span class="source-line-no">629</span><span id="line-629"> plugins.addAll(project.getBuildPlugins());</span> +<span class="source-line-no">557</span><span id="line-557"> return status;</span> +<span class="source-line-no">558</span><span id="line-558"> }</span> +<span class="source-line-no">559</span><span id="line-559"></span> +<span class="source-line-no">560</span><span id="line-560"> private boolean isValidVersion(String version) {</span> +<span class="source-line-no">561</span><span id="line-561"> return (version != null && !version.isEmpty()) && !StringUtils.isWhitespace(version);</span> +<span class="source-line-no">562</span><span id="line-562"> }</span> +<span class="source-line-no">563</span><span id="line-563"></span> +<span class="source-line-no">564</span><span id="line-564"> private boolean isMatchingPlugin(Plugin source, PluginWrapper plugin) {</span> +<span class="source-line-no">565</span><span id="line-565"> return source.getArtifactId().equals(plugin.getArtifactId())</span> +<span class="source-line-no">566</span><span id="line-566"> && source.getGroupId().equals(plugin.getGroupId());</span> +<span class="source-line-no">567</span><span id="line-567"> }</span> +<span class="source-line-no">568</span><span id="line-568"></span> +<span class="source-line-no">569</span><span id="line-569"> /**</span> +<span class="source-line-no">570</span><span id="line-570"> * Checks if is snapshot.</span> +<span class="source-line-no">571</span><span id="line-571"> *</span> +<span class="source-line-no">572</span><span id="line-572"> * @param baseVersion the base version</span> +<span class="source-line-no">573</span><span id="line-573"> * @return true, if is snapshot</span> +<span class="source-line-no">574</span><span id="line-574"> */</span> +<span class="source-line-no">575</span><span id="line-575"> private boolean isSnapshot(String baseVersion) {</span> +<span class="source-line-no">576</span><span id="line-576"> if (banTimestamps) {</span> +<span class="source-line-no">577</span><span id="line-577"> return Artifact.VERSION_FILE_PATTERN.matcher(baseVersion).matches()</span> +<span class="source-line-no">578</span><span id="line-578"> || baseVersion.endsWith(Artifact.SNAPSHOT_VERSION);</span> +<span class="source-line-no">579</span><span id="line-579"> } else {</span> +<span class="source-line-no">580</span><span id="line-580"> return baseVersion.endsWith(Artifact.SNAPSHOT_VERSION);</span> +<span class="source-line-no">581</span><span id="line-581"> }</span> +<span class="source-line-no">582</span><span id="line-582"> }</span> +<span class="source-line-no">583</span><span id="line-583"></span> +<span class="source-line-no">584</span><span id="line-584"> /*</span> +<span class="source-line-no">585</span><span id="line-585"> * Uses borrowed lifecycle code to get a list of all plugins bound to the lifecycle.</span> +<span class="source-line-no">586</span><span id="line-586"> */</span> +<span class="source-line-no">587</span><span id="line-587"></span> +<span class="source-line-no">588</span><span id="line-588"> /**</span> +<span class="source-line-no">589</span><span id="line-589"> * Gets the all plugins.</span> +<span class="source-line-no">590</span><span id="line-590"> *</span> +<span class="source-line-no">591</span><span id="line-591"> * @param project the project</span> +<span class="source-line-no">592</span><span id="line-592"> * @param lifecycle the lifecycle</span> +<span class="source-line-no">593</span><span id="line-593"> * @return the all plugins</span> +<span class="source-line-no">594</span><span id="line-594"> * @throws PluginNotFoundException the plugin not found exception</span> +<span class="source-line-no">595</span><span id="line-595"> * @throws LifecycleExecutionException the lifecycle execution exception</span> +<span class="source-line-no">596</span><span id="line-596"> */</span> +<span class="source-line-no">597</span><span id="line-597"> private Set<Plugin> getAllPlugins(MavenProject project, Lifecycle lifecycle)</span> +<span class="source-line-no">598</span><span id="line-598"> throws PluginNotFoundException, LifecycleExecutionException {</span> +<span class="source-line-no">599</span><span id="line-599"></span> +<span class="source-line-no">600</span><span id="line-600"> getLog().debug("RequirePluginVersions.getAllPlugins:");</span> +<span class="source-line-no">601</span><span id="line-601"></span> +<span class="source-line-no">602</span><span id="line-602"> Set<Plugin> plugins = new HashSet<>();</span> +<span class="source-line-no">603</span><span id="line-603"> // first, bind those associated with the packaging</span> +<span class="source-line-no">604</span><span id="line-604"> Map<String, String> mappings = findMappingsForLifecycle(project, lifecycle);</span> +<span class="source-line-no">605</span><span id="line-605"></span> +<span class="source-line-no">606</span><span id="line-606"> for (Map.Entry<String, String> entry : mappings.entrySet()) {</span> +<span class="source-line-no">607</span><span id="line-607"> getLog().debug(" lifecycleMapping = " + entry.getKey());</span> +<span class="source-line-no">608</span><span id="line-608"> String pluginsForLifecycle = entry.getValue();</span> +<span class="source-line-no">609</span><span id="line-609"> getLog().debug(" plugins = " + pluginsForLifecycle);</span> +<span class="source-line-no">610</span><span id="line-610"> if (pluginsForLifecycle != null && !pluginsForLifecycle.isEmpty()) {</span> +<span class="source-line-no">611</span><span id="line-611"> String pluginList[] = pluginsForLifecycle.split(",");</span> +<span class="source-line-no">612</span><span id="line-612"> for (String plugin : pluginList) {</span> +<span class="source-line-no">613</span><span id="line-613"> plugin = StringUtils.strip(plugin);</span> +<span class="source-line-no">614</span><span id="line-614"> getLog().debug(" plugin = " + plugin);</span> +<span class="source-line-no">615</span><span id="line-615"> String tokens[] = plugin.split(":");</span> +<span class="source-line-no">616</span><span id="line-616"> getLog().debug(" GAV = " + Arrays.asList(tokens));</span> +<span class="source-line-no">617</span><span id="line-617"></span> +<span class="source-line-no">618</span><span id="line-618"> Plugin p = new Plugin();</span> +<span class="source-line-no">619</span><span id="line-619"> p.setGroupId(tokens[0]);</span> +<span class="source-line-no">620</span><span id="line-620"> p.setArtifactId(tokens[1]);</span> +<span class="source-line-no">621</span><span id="line-621"> plugins.add(p);</span> +<span class="source-line-no">622</span><span id="line-622"> }</span> +<span class="source-line-no">623</span><span id="line-623"> }</span> +<span class="source-line-no">624</span><span id="line-624"> }</span> +<span class="source-line-no">625</span><span id="line-625"></span> +<span class="source-line-no">626</span><span id="line-626"> plugins.addAll(project.getBuildPlugins());</span> +<span class="source-line-no">627</span><span id="line-627"></span> +<span class="source-line-no">628</span><span id="line-628"> return plugins;</span> +<span class="source-line-no">629</span><span id="line-629"> }</span> <span class="source-line-no">630</span><span id="line-630"></span> -<span class="source-line-no">631</span><span id="line-631"> return plugins;</span> -<span class="source-line-no">632</span><span id="line-632"> }</span> -<span class="source-line-no">633</span><span id="line-633"></span> -<span class="source-line-no">634</span><span id="line-634"> /*</span> -<span class="source-line-no">635</span><span id="line-635"> * NOTE: All the code following this point was scooped from the DefaultLifecycleExecutor. There must be a better way</span> -<span class="source-line-no">636</span><span id="line-636"> * but for now it should work.</span> -<span class="source-line-no">637</span><span id="line-637"> */</span> -<span class="source-line-no">638</span><span id="line-638"></span> -<span class="source-line-no">639</span><span id="line-639"> /**</span> -<span class="source-line-no">640</span><span id="line-640"> * Gets the phase to lifecycle map.</span> -<span class="source-line-no">641</span><span id="line-641"> *</span> -<span class="source-line-no">642</span><span id="line-642"> * @return the phase to lifecycle map</span> -<span class="source-line-no">643</span><span id="line-643"> * @throws LifecycleExecutionException the lifecycle execution exception</span> -<span class="source-line-no">644</span><span id="line-644"> */</span> -<span class="source-line-no">645</span><span id="line-645"> public Map<String, Lifecycle> getPhaseToLifecycleMap() throws LifecycleExecutionException {</span> -<span class="source-line-no">646</span><span id="line-646"> if (phaseToLifecycleMap == null) {</span> -<span class="source-line-no">647</span><span id="line-647"> phaseToLifecycleMap = new HashMap<>();</span> -<span class="source-line-no">648</span><span id="line-648"></span> -<span class="source-line-no">649</span><span id="line-649"> for (Lifecycle lifecycle : lifecycles) {</span> -<span class="source-line-no">650</span><span id="line-650"> List<String> phases = lifecycle.getPhases();</span> -<span class="source-line-no">651</span><span id="line-651"> for (String phase : phases) {</span> -<span class="source-line-no">652</span><span id="line-652"> getLog().debug("getPhaseToLifecycleMap(): phase: " + phase);</span> -<span class="source-line-no">653</span><span id="line-653"> if (phaseToLifecycleMap.containsKey(phase)) {</span> -<span class="source-line-no">654</span><span id="line-654"> Lifecycle prevLifecycle = phaseToLifecycleMap.get(phase);</span> -<span class="source-line-no">655</span><span id="line-655"> throw new LifecycleExecutionException("Phase '" + phase</span> -<span class="source-line-no">656</span><span id="line-656"> + "' is defined in more than one lifecycle: '" + lifecycle.getId() + "' and '"</span> -<span class="source-line-no">657</span><span id="line-657"> + prevLifecycle.getId() + "'");</span> -<span class="source-line-no">658</span><span id="line-658"> } else {</span> -<span class="source-line-no">659</span><span id="line-659"> phaseToLifecycleMap.put(phase, lifecycle);</span> -<span class="source-line-no">660</span><span id="line-660"> }</span> -<span class="source-line-no">661</span><span id="line-661"> }</span> -<span class="source-line-no">662</span><span id="line-662"> }</span> -<span class="source-line-no">663</span><span id="line-663"> }</span> -<span class="source-line-no">664</span><span id="line-664"> return phaseToLifecycleMap;</span> -<span class="source-line-no">665</span><span id="line-665"> }</span> -<span class="source-line-no">666</span><span id="line-666"></span> -<span class="source-line-no">667</span><span id="line-667"> /**</span> -<span class="source-line-no">668</span><span id="line-668"> * Gets the lifecycle for phase.</span> -<span class="source-line-no">669</span><span id="line-669"> *</span> -<span class="source-line-no">670</span><span id="line-670"> * @param phase the phase</span> -<span class="source-line-no">671</span><span id="line-671"> * @return the lifecycle for phase</span> -<span class="source-line-no">672</span><span id="line-672"> * @throws BuildFailureException the build failure exception</span> -<span class="source-line-no">673</span><span id="line-673"> * @throws LifecycleExecutionException the lifecycle execution exception</span> -<span class="source-line-no">674</span><span id="line-674"> */</span> -<span class="source-line-no">675</span><span id="line-675"> private Lifecycle getLifecycleForPhase(String phase) throws BuildFailureException, LifecycleExecutionException {</span> -<span class="source-line-no">676</span><span id="line-676"> Lifecycle lifecycle = getPhaseToLifecycleMap().get(phase);</span> -<span class="source-line-no">677</span><span id="line-677"></span> -<span class="source-line-no">678</span><span id="line-678"> if (lifecycle == null) {</span> -<span class="source-line-no">679</span><span id="line-679"> throw new BuildFailureException("Unable to find lifecycle for phase '" + phase + "'");</span> -<span class="source-line-no">680</span><span id="line-680"> }</span> -<span class="source-line-no">681</span><span id="line-681"> return lifecycle;</span> -<span class="source-line-no">682</span><span id="line-682"> }</span> -<span class="source-line-no">683</span><span id="line-683"></span> -<span class="source-line-no">684</span><span id="line-684"> /**</span> -<span class="source-line-no">685</span><span id="line-685"> * Find mappings for lifecycle.</span> -<span class="source-line-no">686</span><span id="line-686"> *</span> -<span class="source-line-no">687</span><span id="line-687"> * @param project the project</span> -<span class="source-line-no">688</span><span id="line-688"> * @param lifecycle the lifecycle</span> -<span class="source-line-no">689</span><span id="line-689"> * @return the map</span> -<span class="source-line-no">690</span><span id="line-690"> * @throws LifecycleExecutionException the lifecycle execution exception</span> -<span class="source-line-no">691</span><span id="line-691"> * @throws PluginNotFoundException the plugin not found exception</span> -<span class="source-line-no">692</span><span id="line-692"> */</span> -<span class="source-line-no">693</span><span id="line-693"> private Map<String, String> findMappingsForLifecycle(MavenProject project, Lifecycle lifecycle)</span> -<span class="source-line-no">694</span><span id="line-694"> throws LifecycleExecutionException, PluginNotFoundException {</span> -<span class="source-line-no">695</span><span id="line-695"> String packaging = project.getPackaging();</span> -<span class="source-line-no">696</span><span id="line-696"> Map<String, String> mappings = null;</span> -<span class="source-line-no">697</span><span id="line-697"></span> -<span class="source-line-no">698</span><span id="line-698"> LifecycleMapping m = (LifecycleMapping) findExtension(</span> -<span class="source-line-no">699</span><span id="line-699"> project, LifecycleMapping.ROLE, packaging, session.getSettings(), session.getLocalRepository());</span> -<span class="source-line-no">700</span><span id="line-700"> if (m != null) {</span> -<span class="source-line-no">701</span><span id="line-701"> mappings = m.getPhases(lifecycle.getId());</span> -<span class="source-line-no">702</span><span id="line-702"> }</span> -<span class="source-line-no">703</span><span id="line-703"></span> -<span class="source-line-no">704</span><span id="line-704"> Map<String, String> defaultMappings = lifecycle.getDefaultPhases();</span> -<span class="source-line-no">705</span><span id="line-705"></span> -<span class="source-line-no">706</span><span id="line-706"> if (mappings == null) {</span> -<span class="source-line-no">707</span><span id="line-707"> try {</span> -<span class="source-line-no">708</span><span id="line-708"> m = container.lookup(LifecycleMapping.class, packaging);</span> -<span class="source-line-no">709</span><span id="line-709"> mappings = m.getPhases(lifecycle.getId());</span> -<span class="source-line-no">710</span><span id="line-710"> } catch (ComponentLookupException e) {</span> -<span class="source-line-no">711</span><span id="line-711"> if (defaultMappings == null) {</span> -<span class="source-line-no">712</span><span id="line-712"> throw new LifecycleExecutionException(</span> -<span class="source-line-no">713</span><span id="line-713"> "Cannot find lifecycle mapping for packaging: '" + packaging + "'.", e);</span> -<span class="source-line-no">714</span><span id="line-714"> }</span> -<span class="source-line-no">715</span><span id="line-715"> }</span> -<span class="source-line-no">716</span><span id="line-716"> }</span> -<span class="source-line-no">717</span><span id="line-717"></span> -<span class="source-line-no">718</span><span id="line-718"> if (mappings == null) {</span> -<span class="source-line-no">719</span><span id="line-719"> if (defaultMappings == null) {</span> -<span class="source-line-no">720</span><span id="line-720"> throw new LifecycleExecutionException(</span> -<span class="source-line-no">721</span><span id="line-721"> "Cannot find lifecycle mapping for packaging: '" + packaging + "', and there is no default");</span> -<span class="source-line-no">722</span><span id="line-722"> } else {</span> -<span class="source-line-no">723</span><span id="line-723"> mappings = defaultMappings;</span> -<span class="source-line-no">724</span><span id="line-724"> }</span> -<span class="source-line-no">725</span><span id="line-725"> }</span> +<span class="source-line-no">631</span><span id="line-631"> /*</span> +<span class="source-line-no">632</span><span id="line-632"> * NOTE: All the code following this point was scooped from the DefaultLifecycleExecutor. There must be a better way</span> +<span class="source-line-no">633</span><span id="line-633"> * but for now it should work.</span> +<span class="source-line-no">634</span><span id="line-634"> */</span> +<span class="source-line-no">635</span><span id="line-635"></span> +<span class="source-line-no">636</span><span id="line-636"> /**</span> +<span class="source-line-no">637</span><span id="line-637"> * Gets the phase to lifecycle map.</span> +<span class="source-line-no">638</span><span id="line-638"> *</span> +<span class="source-line-no">639</span><span id="line-639"> * @return the phase to lifecycle map</span> +<span class="source-line-no">640</span><span id="line-640"> * @throws LifecycleExecutionException the lifecycle execution exception</span> +<span class="source-line-no">641</span><span id="line-641"> */</span> +<span class="source-line-no">642</span><span id="line-642"> public Map<String, Lifecycle> getPhaseToLifecycleMap() throws LifecycleExecutionException {</span> +<span class="source-line-no">643</span><span id="line-643"> if (phaseToLifecycleMap == null) {</span> +<span class="source-line-no">644</span><span id="line-644"> phaseToLifecycleMap = new HashMap<>();</span> +<span class="source-line-no">645</span><span id="line-645"></span> +<span class="source-line-no">646</span><span id="line-646"> for (Lifecycle lifecycle : lifecycles) {</span> +<span class="source-line-no">647</span><span id="line-647"> List<String> phases = lifecycle.getPhases();</span> +<span class="source-line-no">648</span><span id="line-648"> for (String phase : phases) {</span> +<span class="source-line-no">649</span><span id="line-649"> getLog().debug("getPhaseToLifecycleMap(): phase: " + phase);</span> +<span class="source-line-no">650</span><span id="line-650"> if (phaseToLifecycleMap.containsKey(phase)) {</span> +<span class="source-line-no">651</span><span id="line-651"> Lifecycle prevLifecycle = phaseToLifecycleMap.get(phase);</span> +<span class="source-line-no">652</span><span id="line-652"> throw new LifecycleExecutionException("Phase '" + phase</span> +<span class="source-line-no">653</span><span id="line-653"> + "' is defined in more than one lifecycle: '" + lifecycle.getId() + "' and '"</span> +<span class="source-line-no">654</span><span id="line-654"> + prevLifecycle.getId() + "'");</span> +<span class="source-line-no">655</span><span id="line-655"> } else {</span> +<span class="source-line-no">656</span><span id="line-656"> phaseToLifecycleMap.put(phase, lifecycle);</span> +<span class="source-line-no">657</span><span id="line-657"> }</span> +<span class="source-line-no">658</span><span id="line-658"> }</span> +<span class="source-line-no">659</span><span id="line-659"> }</span> +<span class="source-line-no">660</span><span id="line-660"> }</span> +<span class="source-line-no">661</span><span id="line-661"> return phaseToLifecycleMap;</span> +<span class="source-line-no">662</span><span id="line-662"> }</span> +<span class="source-line-no">663</span><span id="line-663"></span> +<span class="source-line-no">664</span><span id="line-664"> /**</span> +<span class="source-line-no">665</span><span id="line-665"> * Gets the lifecycle for phase.</span> +<span class="source-line-no">666</span><span id="line-666"> *</span> +<span class="source-line-no">667</span><span id="line-667"> * @param phase the phase</span> +<span class="source-line-no">668</span><span id="line-668"> * @return the lifecycle for phase</span> +<span class="source-line-no">669</span><span id="line-669"> * @throws BuildFailureException the build failure exception</span> +<span class="source-line-no">670</span><span id="line-670"> * @throws LifecycleExecutionException the lifecycle execution exception</span> +<span class="source-line-no">671</span><span id="line-671"> */</span> +<span class="source-line-no">672</span><span id="line-672"> private Lifecycle getLifecycleForPhase(String phase) throws BuildFailureException, LifecycleExecutionException {</span> +<span class="source-line-no">673</span><span id="line-673"> Lifecycle lifecycle = getPhaseToLifecycleMap().get(phase);</span> +<span class="source-line-no">674</span><span id="line-674"></span> +<span class="source-line-no">675</span><span id="line-675"> if (lifecycle == null) {</span> +<span class="source-line-no">676</span><span id="line-676"> throw new BuildFailureException("Unable to find lifecycle for phase '" + phase + "'");</span> +<span class="source-line-no">677</span><span id="line-677"> }</span> +<span class="source-line-no">678</span><span id="line-678"> return lifecycle;</span> +<span class="source-line-no">679</span><span id="line-679"> }</span> +<span class="source-line-no">680</span><span id="line-680"></span> +<span class="source-line-no">681</span><span id="line-681"> /**</span> +<span class="source-line-no">682</span><span id="line-682"> * Find mappings for lifecycle.</span> +<span class="source-line-no">683</span><span id="line-683"> *</span> +<span class="source-line-no">684</span><span id="line-684"> * @param project the project</span> +<span class="source-line-no">685</span><span id="line-685"> * @param lifecycle the lifecycle</span> +<span class="source-line-no">686</span><span id="line-686"> * @return the map</span> +<span class="source-line-no">687</span><span id="line-687"> * @throws LifecycleExecutionException the lifecycle execution exception</span> +<span class="source-line-no">688</span><span id="line-688"> * @throws PluginNotFoundException the plugin not found exception</span> +<span class="source-line-no">689</span><span id="line-689"> */</span> +<span class="source-line-no">690</span><span id="line-690"> private Map<String, String> findMappingsForLifecycle(MavenProject project, Lifecycle lifecycle)</span> +<span class="source-line-no">691</span><span id="line-691"> throws LifecycleExecutionException, PluginNotFoundException {</span> +<span class="source-line-no">692</span><span id="line-692"> String packaging = project.getPackaging();</span> +<span class="source-line-no">693</span><span id="line-693"> Map<String, String> mappings = null;</span> +<span class="source-line-no">694</span><span id="line-694"></span> +<span class="source-line-no">695</span><span id="line-695"> LifecycleMapping m = (LifecycleMapping) findExtension(</span> +<span class="source-line-no">696</span><span id="line-696"> project, LifecycleMapping.ROLE, packaging, session.getSettings(), session.getLocalRepository());</span> +<span class="source-line-no">697</span><span id="line-697"> if (m != null) {</span> +<span class="source-line-no">698</span><span id="line-698"> mappings = m.getPhases(lifecycle.getId());</span> +<span class="source-line-no">699</span><span id="line-699"> }</span> +<span class="source-line-no">700</span><span id="line-700"></span> +<span class="source-line-no">701</span><span id="line-701"> Map<String, String> defaultMappings = lifecycle.getDefaultPhases();</span> +<span class="source-line-no">702</span><span id="line-702"></span> +<span class="source-line-no">703</span><span id="line-703"> if (mappings == null) {</span> +<span class="source-line-no">704</span><span id="line-704"> try {</span> +<span class="source-line-no">705</span><span id="line-705"> m = container.lookup(LifecycleMapping.class, packaging);</span> +<span class="source-line-no">706</span><span id="line-706"> mappings = m.getPhases(lifecycle.getId());</span> +<span class="source-line-no">707</span><span id="line-707"> } catch (ComponentLookupException e) {</span> +<span class="source-line-no">708</span><span id="line-708"> if (defaultMappings == null) {</span> +<span class="source-line-no">709</span><span id="line-709"> throw new LifecycleExecutionException(</span> +<span class="source-line-no">710</span><span id="line-710"> "Cannot find lifecycle mapping for packaging: '" + packaging + "'.", e);</span> +<span class="source-line-no">711</span><span id="line-711"> }</span> +<span class="source-line-no">712</span><span id="line-712"> }</span> +<span class="source-line-no">713</span><span id="line-713"> }</span> +<span class="source-line-no">714</span><span id="line-714"></span> +<span class="source-line-no">715</span><span id="line-715"> if (mappings == null) {</span> +<span class="source-line-no">716</span><span id="line-716"> if (defaultMappings == null) {</span> +<span class="source-line-no">717</span><span id="line-717"> throw new LifecycleExecutionException(</span> +<span class="source-line-no">718</span><span id="line-718"> "Cannot find lifecycle mapping for packaging: '" + packaging + "', and there is no default");</span> +<span class="source-line-no">719</span><span id="line-719"> } else {</span> +<span class="source-line-no">720</span><span id="line-720"> mappings = defaultMappings;</span> +<span class="source-line-no">721</span><span id="line-721"> }</span> +<span class="source-line-no">722</span><span id="line-722"> }</span> +<span class="source-line-no">723</span><span id="line-723"></span> +<span class="source-line-no">724</span><span id="line-724"> return mappings;</span> +<span class="source-line-no">725</span><span id="line-725"> }</span> <span class="source-line-no">726</span><span id="line-726"></span> -<span class="source-line-no">727</span><span id="line-727"> return mappings;</span> -<span class="source-line-no">728</span><span id="line-728"> }</span> -<span class="source-line-no">729</span><span id="line-729"></span> -<span class="source-line-no">730</span><span id="line-730"> /**</span> -<span class="source-line-no">731</span><span id="line-731"> * Find extension.</span> -<span class="source-line-no">732</span><span id="line-732"> *</span> -<span class="source-line-no">733</span><span id="line-733"> * @param project the project</span> -<span class="source-line-no">734</span><span id="line-734"> * @param role the role</span> -<span class="source-line-no">735</span><span id="line-735"> * @param roleHint the role hint</span> -<span class="source-line-no">736</span><span id="line-736"> * @param settings the settings</span> -<span class="source-line-no">737</span><span id="line-737"> * @param localRepository the local repository</span> -<span class="source-line-no">738</span><span id="line-738"> * @return the object</span> -<span class="source-line-no">739</span><span id="line-739"> * @throws LifecycleExecutionException the lifecycle execution exception</span> -<span class="source-line-no">740</span><span id="line-740"> * @throws PluginNotFoundException the plugin not found exception</span> -<span class="source-line-no">741</span><span id="line-741"> */</span> -<span class="source-line-no">742</span><span id="line-742"> private Object findExtension(</span> -<span class="source-line-no">743</span><span id="line-743"> MavenProject project, String role, String roleHint, Settings settings, ArtifactRepository localRepository)</span> -<span class="source-line-no">744</span><span id="line-744"> throws LifecycleExecutionException, PluginNotFoundException {</span> -<span class="source-line-no">745</span><span id="line-745"> Object pluginComponent = null;</span> -<span class="source-line-no">746</span><span id="line-746"></span> -<span class="source-line-no">747</span><span id="line-747"> List<Plugin> buildPlugins = project.getBuildPlugins();</span> -<span class="source-line-no">748</span><span id="line-748"> for (Plugin plugin : buildPlugins) {</span> -<span class="source-line-no">749</span><span id="line-749"> if (plugin.isExtensions()) {</span> -<span class="source-line-no">750</span><span id="line-750"> verifyPlugin(plugin, project, settings, localRepository);</span> -<span class="source-line-no">751</span><span id="line-751"></span> -<span class="source-line-no">752</span><span id="line-752"> // TODO: if moved to the plugin manager we</span> -<span class="source-line-no">753</span><span id="line-753"> // already have the descriptor from above</span> -<span class="source-line-no">754</span><span id="line-754"> // and so do can lookup the container</span> -<span class="source-line-no">755</span><span id="line-755"> // directly</span> -<span class="source-line-no">756</span><span id="line-756"> try {</span> -<span class="source-line-no">757</span><span id="line-757"> pluginComponent = pluginManager.getPluginComponent(plugin, role, roleHint);</span> -<span class="source-line-no">758</span><span id="line-758"></span> -<span class="source-line-no">759</span><span id="line-759"> if (pluginComponent != null) {</span> -<span class="source-line-no">760</span><span id="line-760"> break;</span> -<span class="source-line-no">761</span><span id="line-761"> }</span> -<span class="source-line-no">762</span><span id="line-762"> } catch (ComponentLookupException e) {</span> -<span class="source-line-no">763</span><span id="line-763"> getLog().debug("Unable to find the lifecycle component in the extension " + e.getMessage());</span> -<span class="source-line-no">764</span><span id="line-764"> } catch (PluginManagerException e) {</span> -<span class="source-line-no">765</span><span id="line-765"> throw new LifecycleExecutionException(</span> -<span class="source-line-no">766</span><span id="line-766"> "Error getting extensions from the plugin '" + plugin.getKey() + "': " + e.getMessage(), e);</span> -<span class="source-line-no">767</span><span id="line-767"> }</span> -<span class="source-line-no">768</span><span id="line-768"> }</span> -<span class="source-line-no">769</span><span id="line-769"> }</span> -<span class="source-line-no">770</span><span id="line-770"> return pluginComponent;</span> -<span class="source-line-no">771</span><span id="line-771"> }</span> -<span class="source-line-no">772</span><span id="line-772"></span> -<span class="source-line-no">773</span><span id="line-773"> /**</span> -<span class="source-line-no">774</span><span id="line-774"> * Verify plugin.</span> -<span class="source-line-no">775</span><span id="line-775"> *</span> -<span class="source-line-no">776</span><span id="line-776"> * @param plugin the plugin</span> -<span class="source-line-no">777</span><span id="line-777"> * @param project the project</span> -<span class="source-line-no">778</span><span id="line-778"> * @param settings the settings</span> -<span class="source-line-no">779</span><span id="line-779"> * @param localRepository the local repository</span> -<span class="source-line-no">780</span><span id="line-780"> * @return the plugin descriptor</span> -<span class="source-line-no">781</span><span id="line-781"> * @throws LifecycleExecutionException the lifecycle execution exception</span> -<span class="source-line-no">782</span><span id="line-782"> * @throws PluginNotFoundException the plugin not found exception</span> -<span class="source-line-no">783</span><span id="line-783"> */</span> -<span class="source-line-no">784</span><span id="line-784"> private void verifyPlugin(</span> -<span class="source-line-no">785</span><span id="line-785"> Plugin plugin, MavenProject project, Settings settings, ArtifactRepository localRepository)</span> -<span class="source-line-no">786</span><span id="line-786"> throws LifecycleExecutionException, PluginNotFoundException {</span> -<span class="source-line-no">787</span><span id="line-787"> try {</span> -<span class="source-line-no">788</span><span id="line-788"> pluginManager.verifyPlugin(plugin, project, settings, localRepository);</span> -<span class="source-line-no">789</span><span id="line-789"> } catch (PluginManagerException e) {</span> -<span class="source-line-no">790</span><span id="line-790"> throw new LifecycleExecutionException(</span> -<span class="source-line-no">791</span><span id="line-791"> "Internal error in the plugin manager getting plugin '" + plugin.getKey() + "': " + e.getMessage(),</span> -<span class="source-line-no">792</span><span id="line-792"> e);</span> -<span class="source-line-no">793</span><span id="line-793"> } catch (PluginVersionResolutionException</span> -<span class="source-line-no">794</span><span id="line-794"> | InvalidVersionSpecificationException</span> -<span class="source-line-no">795</span><span id="line-795"> | InvalidPluginException</span> -<span class="source-line-no">796</span><span id="line-796"> | PluginVersionNotFoundException</span> -<span class="source-line-no">797</span><span id="line-797"> | org.apache.maven.artifact.resolver.ArtifactResolutionException</span> -<span class="source-line-no">798</span><span id="line-798"> | ArtifactNotFoundException e) {</span> -<span class="source-line-no">799</span><span id="line-799"> throw new LifecycleExecutionException(e.getMessage(), e);</span> -<span class="source-line-no">800</span><span id="line-800"> }</span> -<span class="source-line-no">801</span><span id="line-801"> }</span> -<span class="source-line-no">802</span><span id="line-802"></span> -<span class="source-line-no">803</span><span id="line-803"> /**</span> -<span class="source-line-no">804</span><span id="line-804"> * Gets all plugin entries in build.plugins, build.pluginManagement.plugins, profile.build.plugins, reporting and</span> -<span class="source-line-no">805</span><span id="line-805"> * profile.reporting in this project and all parents</span> -<span class="source-line-no">806</span><span id="line-806"> *</span> -<span class="source-line-no">807</span><span id="line-807"> * @param project the project</span> -<span class="source-line-no">808</span><span id="line-808"> * @return the all plugin entries wrapped in a PluginWrapper Object</span> -<span class="source-line-no">809</span><span id="line-809"> */</span> -<span class="source-line-no">810</span><span id="line-810"> private List<PluginWrapper> getAllPluginEntries(MavenProject project) {</span> -<span class="source-line-no">811</span><span id="line-811"> List<PluginWrapper> plugins = new ArrayList<>();</span> -<span class="source-line-no">812</span><span id="line-812"> // now find all the plugin entries, either in</span> -<span class="source-line-no">813</span><span id="line-813"> // build.plugins or build.pluginManagement.plugins, profiles.plugins and reporting</span> -<span class="source-line-no">814</span><span id="line-814"></span> -<span class="source-line-no">815</span><span id="line-815"> getPlugins(plugins, project.getModel());</span> -<span class="source-line-no">816</span><span id="line-816"> getReportingPlugins(plugins, project.getModel());</span> -<span class="source-line-no">817</span><span id="line-817"> getPluginManagementPlugins(plugins, project.getModel());</span> -<span class="source-line-no">818</span><span id="line-818"> addPluginsInProfiles(plugins, project.getModel());</span> +<span class="source-line-no">727</span><span id="line-727"> /**</span> +<span class="source-line-no">728</span><span id="line-728"> * Find extension.</span> +<span class="source-line-no">729</span><span id="line-729"> *</span> +<span class="source-line-no">730</span><span id="line-730"> * @param project the project</span> +<span class="source-line-no">731</span><span id="line-731"> * @param role the role</span> +<span class="source-line-no">732</span><span id="line-732"> * @param roleHint the role hint</span> +<span class="source-line-no">733</span><span id="line-733"> * @param settings the settings</span> +<span class="source-line-no">734</span><span id="line-734"> * @param localRepository the local repository</span> +<span class="source-line-no">735</span><span id="line-735"> * @return the object</span> +<span class="source-line-no">736</span><span id="line-736"> * @throws LifecycleExecutionException the lifecycle execution exception</span> +<span class="source-line-no">737</span><span id="line-737"> * @throws PluginNotFoundException the plugin not found exception</span> +<span class="source-line-no">738</span><span id="line-738"> */</span> +<span class="source-line-no">739</span><span id="line-739"> private Object findExtension(</span> +<span class="source-line-no">740</span><span id="line-740"> MavenProject project, String role, String roleHint, Settings settings, ArtifactRepository localRepository)</span> +<span class="source-line-no">741</span><span id="line-741"> throws LifecycleExecutionException, PluginNotFoundException {</span> +<span class="source-line-no">742</span><span id="line-742"> Object pluginComponent = null;</span> +<span class="source-line-no">743</span><span id="line-743"></span> +<span class="source-line-no">744</span><span id="line-744"> List<Plugin> buildPlugins = project.getBuildPlugins();</span> +<span class="source-line-no">745</span><span id="line-745"> for (Plugin plugin : buildPlugins) {</span> +<span class="source-line-no">746</span><span id="line-746"> if (plugin.isExtensions()) {</span> +<span class="source-line-no">747</span><span id="line-747"> verifyPlugin(plugin, project, settings, localRepository);</span> +<span class="source-line-no">748</span><span id="line-748"></span> +<span class="source-line-no">749</span><span id="line-749"> // TODO: if moved to the plugin manager we</span>
[... 319 lines stripped ...]