o the tests need to be simplified, possibly use the jxpath technique to make the test more concise
o the API still needs some work, and we still need to be able to adapt the lifecycle in context -- my particular use case is running inside eclipse and essentially disabling all but what is required to run inside eclipse. we don't need to compile, test or package for example
git-svn-id: https://svn.apache.org/repos/asf/maven/components/branches/MNG-2766@757922 13f79535-47bb-0310-9956-ffa450edef68
o add a method to the RepositorySystem for creating the default local repository
o make the test utils for the lifecycle executor use the createDefaultLocalRepository method to decouple from my home directory
git-svn-id: https://svn.apache.org/repos/asf/maven/components/branches/MNG-2766@757464 13f79535-47bb-0310-9956-ffa450edef68
behind the repository system you can see project and plugins being processed an incredible number of times and the recursion
in the collector is broken causing POMs for plugins to be processed hundreds of times. The bootstrap under profiling reveals
the xpp3 parser being used almost 30k times which is pure insanity.
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@750774 13f79535-47bb-0310-9956-ffa450edef68
o add plexus component descriptor generation to the bootstrap so we can start removing the hand-written descriptors and start
using annotations everywhere
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@720432 13f79535-47bb-0310-9956-ffa450edef68
This commit introduces three changes: user-level properties that are separated from the execution properties, where execution properties contain envars, sysprops, and user-level properties...user-level properties are useful for POM interpolation for 2339 and 3355.
Second, a ProjectBuilderConfiguration interface and default implementation, to stem the proliferation of method parameters to projectBuilder methods. This was a natural place to introduce it, as user-level properties had to be passed in separately from the execution properties, for interpolation.
Finally, interpolation has been switched to use the new plexus-interpolation project, which is based on the classes in plexus-utils.
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@644354 13f79535-47bb-0310-9956-ffa450edef68
Had to bump the plexus-container-default version up to alpha-36 to fix a problem in ClassicSingletonComponentManager. All realms for extensions, plugins, and projects (which contain only imports from extensions) are now managed by the MavenRealmManager.
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@591391 13f79535-47bb-0310-9956-ffa450edef68
Also, shading the embedder to hide the jdom classes, and adjusting the assembly appropriately.
Final thing: I'm rolling back some changes I accidentally made to the CLIManager the other day, which breaks the release plugin because the long options were removed for some reason (save action in Eclipse; don't ask).
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@585012 13f79535-47bb-0310-9956-ffa450edef68
directly. eventually i will get it to be the session, along with the profile tools, then all the tools can also
share a common interpolator, which can then be shared by other components instead of having 5 interpolators lying
around causing a great deal of inconsistency.
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@573494 13f79535-47bb-0310-9956-ffa450edef68
while i transform the settings components to take a MavenSession. Any component executing within Maven should be able to use
a session. the session will contain everything required and any new component added to the system should only take the
session as a parameter. same pattern for all components. that's the goal. it will take a few hops.
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@573462 13f79535-47bb-0310-9956-ffa450edef68
o removing dead code
o examining how plugin version resolution is done, and we have a mix of a desire to use snapshots locally and pull releases
remotely. if the repositories are mixed a snapshot will be pull automagically. this doesn't happen in practice but snapshots
for plugin versions should be limited to a local search only.
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@572872 13f79535-47bb-0310-9956-ffa450edef68
partially being use and we problems being emitted with messages like:
NOTE: One or more purely derived expression elements were detected in this expression.
If you continue to get this error after any other expression elements are specified correctly
please report this issue to the Maven development team.
I think we have to make a very concerted effort to make useful messages because I'm tired of standing behind Maven
users and being embarrassed when they look at me and ask "what does that mean?". "i actually have no idea."
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@572456 13f79535-47bb-0310-9956-ffa450edef68
attempt to move toward true embeddability.
- System properties are still populated in the CLI to make sure that the
system property profile activator functions and the settings are dealt with
correctly. I will look at each of those shortly but this is a first step.
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@293504 13f79535-47bb-0310-9956-ffa450edef68
o Improved the error diagnostics related to artifact resolution errors.
o Added xml-based documentation of supported plugin parameter expressions, including info about how to affect them ('-o' for example), how to specify them (<distributionManagement><repository/> for example in ${project.distributionManagementArtifactRepository}), and what the expressions are actually used for. This can also serve as a basis for creating documentation for plugin parameter expressions on the website.
o Improved the error diagnostics for plugin configuration errors.
o Added a couple of ITs in the 1000 series to test these two error conditions.
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@292750 13f79535-47bb-0310-9956-ffa450edef68
o Extracting basedir from the project instance when PluginParameterExpressionEvaluator is init'ed if project != null...otherwise, using ${user.dir} from sysprops.
o Extracting values for resolution from POM properties before POM instance during POM interpolation, and adding checks to guard against self-reference of POM elements.
o Added three ITs (one contra) to test these resolutions.
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@291735 13f79535-47bb-0310-9956-ffa450edef68
PluginParameterExpressionEvaluator now has two static final Maps - BANNED_EXPRESSIONS and DEPRECATED_EXPRESSIONS, each of which contain mappings of restricted expressions to the preferred alternative.
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@232200 13f79535-47bb-0310-9956-ffa450edef68
o Added --fail-fast --fail-at-end --fail-never CLI options, with appropriate summary and exclusion of dependent projects from the build when --fail-at-end is specified. Also, implemented it0046 and it1011 to test it.
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@227490 13f79535-47bb-0310-9956-ffa450edef68
o Changed MavenMetadataSource to a component, to avoid having to lookup artifactFactory and projectBuilder in order to
construct it.
o Added add(..) method to ScmBean in the release plugin to allow addition of release-pom.xml
o Changed the PrepareReleaseMojo to resolve ONLY version and parent-version for the normal pom.xml, and fully resolve all
artifacts used in the release-pom.xml, including version, parent-version, dependency closure (given by project.getArtifacts()), plugins, and reports. It will then add the release-pom.xml, and (attempt to) delete it before performing the final commit for next development version.
o Added some mapping methods to ArtifactUtils, to key by artifact.getId, and to create an Artifact.getId()-compatible string from parameters.
o Added TestProjectBuilder to remove the requirement in ProjectClasspathTest to modify the fields of the project builder directly.
o Cleaned up the AbstractReleaseMojo and PrepareReleaseMojo to avoid container lookups...they're now mojo parameters with the 'component.' prefix.
NOTE: Next step is to figure out how to use maven-scm to remove an SCM resource, to enable the prepare mojo to take the release-pom.xml back out of HEAD after the tag is complete.
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@224413 13f79535-47bb-0310-9956-ffa450edef68
split artifact impl from api so that dep resolution can be used independently of wagon
only the first step in making maven-artifact more useful as a public api - more changes to be made
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@191634 13f79535-47bb-0310-9956-ffa450edef68
- refactor project out of MavenSession so that it can be cloned
- refactor lifecycle construction out so we can clone the existing one and pass it into a new execution
- only resolve plugins that are executed (MNG-489)
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@191413 13f79535-47bb-0310-9956-ffa450edef68
This fixed a couple of bugs along the way.
One change that this has brought to bear from the document is you now must specify a goal for it to be bound to the LC
(see it0008)
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@191285 13f79535-47bb-0310-9956-ffa450edef68
refactor artifact creation to all go through the factory, and assign the type handler from there.
Attach EJB client to the EJB artifact so that it is installed/deployed along with it.
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@191096 13f79535-47bb-0310-9956-ffa450edef68
o Added support for update-all and update-none when prompting the user.
o Added --update-plugins/-F option to force an update of the plugins used in the project.
o Added autoUpdate setting for the plugin registry. This is used when in non-interactive mode, to determine whether to register plugin updates
o Added updateInterval to determine when/how often to check for updates to registered plugins. Supports three syntaxes:
- 'never'
- 'always'
- 'interval:XXX' (where XXX can be a combination of weeks, days, hours, and minutes in the syntax: 1w1d1h1m)
> this renders the interval syntax similar to 'interval:1w' to check every week.
NOTE: update intervals are calculated from the time a particular plugin was last checked.
o Added lastChecked attribute for registered plugins, to use as a basis for calculating update-check interval
o Added RuntimeInfo classes for maven-settings and maven-plugin-registry, to help in tracking the file each instance comes from, in addition to merging info which is useful when extracting the user-level instance from the merged instance (for persisting changes to the user instance, f.e.).
o Changed verifyPlugin(..) to take an instance of Settings, to allow persistent decisions across the session (like update-all, update-none in the plugin version manager)
This should take care of outstanding issues with this new feature. I'm closing the JIRA issue now, and we'll deal with any bugs/shortcomings as separate issues.
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@191021 13f79535-47bb-0310-9956-ffa450edef68
o Moved marmalade support dependencies out of maven-core, since they can be supported on demand now
o changed the ordering of the ant and assembly plugins, to show that the classloader (plugin param) bug is fixed.
o added a method in PluginDescriptor which is similar to o.a.m.model.Plugin.getId() (I think that's the method; it's the one that results in a key of 'g:a')
o moved wagon-ssh dependency into maven-core, since there is a new issue related to nested containers and wagons which are introduced as plugin dependencies. This should be solved using a mechanism similar to plugin-manager for wagon-manager impl in future anyway
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@187639 13f79535-47bb-0310-9956-ffa450edef68
This is restoring the settings to their original package structure, and putting profiles next to it...the change I'm reversing was not a good one, conceptually.
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@179289 13f79535-47bb-0310-9956-ffa450edef68
o Created corresponding runtime exception: InvalidArtifactRTException
o Added error diagnoser for InvalidArtifactRTException
o Changed logError() in DefaultMaven to use error diagnosers (even the devs could use a hand!)
o Added unit test for InvalidArtifactDiagnoser.
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@179265 13f79535-47bb-0310-9956-ffa450edef68
o Added concept of ErrorDiagnoser to help interpret errors and provide user feedback
o Added PluginParameterException to provide richer information than simply PluginConfigurationException (it's derived from PluginConfigurationException)
o Added implementations of ErrorDiagnoser for artifact resolution and plugin configuration handling.
o Modified DefaultMaven's logFailure(..) method to use errorDiagnosers Map (injected via Plexus)
I approached the plugin parameter expression/name feedback in this way, as it seems like a general pattern for interpreting errors without embedding this logic deep within the app itself. Feel free to rollback if this causes issues.
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@169379 13f79535-47bb-0310-9956-ffa450edef68
o Added code to cache the active proxy and profile inside the Settings instance for quicker lookup.
o Added a method to initialize a new active profile for a Settings instance in the event one didn't exist.
o Started adding offline mode. So far, I've implemented:
- Warning when a mojo declares a requirement for connectivity, but we're offline.
- INFO message stating when maven is running in offline mode.
- Addition to the Profile class in o.a.m.settings package to allow specification of offline mode by declaring: <offline>true</offline>
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@163969 13f79535-47bb-0310-9956-ffa450edef68
This has ironed out most wrinkles. Still need to implement the snapshot checking cache, and special case the use of installed snapshots over deployed ones.
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@163706 13f79535-47bb-0310-9956-ffa450edef68
didn't exists. The value extractor will now return null if the getter doesn't
exists.
o Properly implemented the method caching in the value exctrator.
o Changed the RegexBasedModelInterpolator so it would properly handle null
values. It used to convert null to "null" and then insert that, now it will
leave the expression as is.
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@163696 13f79535-47bb-0310-9956-ffa450edef68
o Removed AbstractArtifactComponent as it was simply delegating to the class and prevented other inheritence for the resolver which seems more appropriate.
o fixed test failure in ProjectClasspathTest due to incorrectly constructed component - using plexus even though still working around the problem with a hack
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@163675 13f79535-47bb-0310-9956-ffa450edef68
------------------------
o Factored the layout for a repository into a separate set of components in o.a.m.a.repository.layout
o Added new DefaultRepositoryLayout that uses the repo layout in http://docs.codehaus.org/pages/viewpage.action?pageId=22230 (it is not used by default until we get the repo1 conversion done)
o Added command-line switches to force legacy local-repo or new format (-a/-A, I know, but try to find something that makes more sense!)
o Added path formatting to the repository itself, which is now constructed with a ArtifactRepositoryLayout instance (since layout should be tied to the repository)
o Removed path formatting altogether from the DefaultArtifactHandlerManager.
o Changed the AbstractArtifactBasedComponent (or whatever it's called) to use the repository formatting in the path() and localPath() methods.
o Moved the plugin repo construction (still intact as a hard-coded singleton list) into the DefaultMavenProjectBuilder, where it will eventually build from POM info.
o Added a new method to build an artifact repository for a <distributionManagement/> section, if possible. This reduced the strain on mojos to construct an ArtifactRepository on demand.
o Refactored all *DeployMojo to use #project.distributionManagementArtifactRepository instead of the #settings, #component..ArtifactRepositoryFactory, ... that it used to require. This is a big simplifying step.
o Removed remote artifact repository construction from DefaultMaven, and changed the MavenSession to delegate to MavenProject for remoteArtifactRepositories, just as it does for pluginRepositories.
o Added remoteArtifactRepositories, pluginArtifactRepositories, distributionManagementArtifactRepository to MavenProject as a cache for the higher-level repos used throughout the system. This is project info, so it belongs here.
o Fixed all the tests in maven-core and maven-artifact which I broke. :)
o Dropped what is probably a big format-bomb, since the Eclipse formatter doesn't really handle 'throws Exception' wrapping the right way.
o Added MavenProject to the MavenSession constructor, since there should always be a MavenProject associated with a build, even if it's just the super-pom.
TODO:
--------------------------
- Write an integration/unit test to ensure that the new repo format works with $classifier (was: $extra) and $groupId[0]/../$groupId[n]. This is a simple adaptation of the old layout, but still needs testing.
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@163638 13f79535-47bb-0310-9956-ffa450edef68
any returns from success will be conveyed by the request, soon to be converted into fields on the plugin. These will eventually be extracted using OGNL, but this is all post alpha-1 work
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@163621 13f79535-47bb-0310-9956-ffa450edef68
This supports a change to a simpler local configuration file (~/.m2/settings.xml by default), which has the general format of:
<settings>
<profiles>
<profile>
<active>true</active> <!-- not needed if this is the only profile -->
<localRepository>/path/to/repo</localRepository>
</profile>
.
.
.
</profiles>
<servers>
<server>
<id>myserver</id>
<username>me</username>
<password>mypass</password>
<privateKey>/path/to/key</privateKey>
<passphrase>key-passphrase</passphrase>
</server>
.
.
.
</servers>
<proxies>
<proxy>
<active>true</active> <!-- not needed if this is the only proxy -->
.
.
.
</proxy>
.
.
.
</proxies>
</settings>
o Added special parameter named '#settings' which simply injects the current MavenSettings from the MavenSession into the request parameters.
o Adjusted the it-verifier and mboot2 accordingly.
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@163578 13f79535-47bb-0310-9956-ffa450edef68
o Added ArtifactRepositoryFactory stuff to construct with AuthenticationInfo if possible.
o Added UserModelBuilder stuff for componentizing UserModel construction.
-> DefaultUserModelBuilder has a configuration point 'userModelPath' which can redirect where it reads user.xml from (${user.home} is substitutable here).
o Added warning message to deployment plugin when deployment repo has no authentication info available.
o Added warning message for repos with null <id/> (auth info cannot be assigned here).
o Added a couple of debug-level messages for aid in debugging repo- and userModel-related problems.
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@163558 13f79535-47bb-0310-9956-ffa450edef68
can now do things like:
m2 package
which makes the jar
m2 install
which installs the jar
m2 test
You can also execute individual goals still like:
clean:clean
pom:install
idea:idea
Execution of goals this way will still have the dependency resolution
flag obeyed but they are run in isolation in that pre/post goals don't
exist anymore. You need to slot your mojos into the lifecycle.
I will add the mechanism whereby configuring a plugin will push
the mojo into the lifecycle.
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@163359 13f79535-47bb-0310-9956-ffa450edef68
o Moved ReflectionProjectValueExtractor into o.a.m.util package and renamed to ReflectionValueExtractor
o Added unit tests for interpolation
o Added integration test for interpolation
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@163335 13f79535-47bb-0310-9956-ffa450edef68
The nested <dependencyDefault> element closely mirrors the <dependency> element specification.
It provides the ability to set url, artifact, properties, version for a dependency that matches on
{groupId, artifactId, type}. Url, artifact, and version will only override the dependency's values if
the dependency doesn't provide the value, and (in the case of url and artifact) the dependency
doesn't provide a version (url and artifact are assumed to be version-specific).
Properties will only be overwritten, and only in the case where the dependency
doesn't specify them.
Dependencies are validated after merging with defaults, since version is not required
on either <dependency> or <dependencyDefault> but is required between the two.
o Added component interface/default impl for injecting project defaults.
o Added unit and integration tests.
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@163323 13f79535-47bb-0310-9956-ffa450edef68
builder should now completly obey mavenHomeLocal.
o Made mavenHome and mavenHomeLocal Files instead of Strings.
o Adding licenses to some files missing license.
o Silencing some eclipse warnings.
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@163188 13f79535-47bb-0310-9956-ffa450edef68
o Removed PluginDownloadPhase, since plugin resolution/download has to be a part of the prereq and pre/postGoal resolution, too
o Changed DefaultMaven to execute the session lifecycle, and the component wiring to likewise wire the DefaultMaven with a session lifecycle manager
o Removed the org.apache.maven.decoration package and its contents, since this is all in the model now
o Fixed the GoalResolutionPhase to verify each goal's plugin in turn as it resolves prereqs, preGoals and postGoals
o Fixed the GoalResolutionPhaseTest to work with the new resolution model
o Added a new createGoalExecutionContext to the MavenTestCase base class, to allow me to inject a MavenProject directly rather than a pom file
o Fixed the MavenLifecycleManagerTest to only expect 4 lifecycle phases, now than the plugin resolution and goal decoration phases are obsoleted
o All builds on local machine, but will depend on plexus-0.17.jar/pom and plexus-artifact-container-1.0-alpha-1.jar/pom to build on beaver
o I uploaded plexus-artifact-container-1.0-alpha-1.jar to ${plexus.home}/dist, but cannot upload POMs due to priveleges problem in poms dir.
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@163007 13f79535-47bb-0310-9956-ffa450edef68
o Changed the embedder/container used to be the new artifact-aware container (plexus-artifact-container-1.0-alpha-1)
o Added new dependency to maven-core for artifact-container.
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@163006 13f79535-47bb-0310-9956-ffa450edef68
o Added testing to show failure to merge resources from parent into child build which specifies a build without these elements
o Fixed resource blending for child build sections which don't specify them.
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@163001 13f79535-47bb-0310-9956-ffa450edef68
-> bascially the mechanism is the same as the one we use for the goal
execution lifecycle
This first cut is so John can see as we're discussing the session stuff
at the moment and I need to get this working in order to push all notions
of artifact handling out of MavenProject.
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@162969 13f79535-47bb-0310-9956-ffa450edef68
it really is. Making way for the notion of a MavenSessionExecutionContext
and it is looking like we will end up with two lifecycles. Where we are
dealing with notions of goals and sessions: some operations need to be
done at the session level and don't need to be repeated for the execution
of every goal.
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@162968 13f79535-47bb-0310-9956-ffa450edef68