| Interface | Description |
|---|---|
| AggregatableAction |
Indicates that this
Action for MavenBuild contributes
an "aggregated" action to its governing MavenModuleSetBuild. |
| MavenAggregatedReport |
Action to be associated with MavenModuleSetBuild,
which usually displays some aspect of the aggregated results
of the module builds (such as aggregated test result, aggregated
coverage report, etc.) |
| MavenArgumentInterceptorAction |
Provides a hook to change the arguments passed to the maven execution.
|
| MavenBuildProxy |
Remoting proxy interface for
MavenReporters to talk to MavenBuild
during the build. |
| MavenBuildProxy.BuildCallable<V,T extends Throwable> | |
| MavenBuildProxy2 |
A part of
MavenBuildProxy that's used internally
for aggregated build. |
| MavenProjectActionBuilder |
Can contribute to project actions.
|
| Class | Description |
|---|---|
| AbstractMavenBuild<P extends AbstractMavenProject<P,B>,B extends AbstractMavenBuild<P,B>> | |
| AbstractMavenBuilder | |
| AbstractMavenBuilder.FilterImpl | |
| AbstractMavenProcessFactory |
Launches the maven process.
|
| AbstractMavenProcessFactory.GetRemotingJar | |
| AbstractMavenProcessFactory.UserInetTcpSocketHostLocator | |
| AbstractMavenProject<P extends hudson.model.AbstractProject<P,R>,R extends hudson.model.AbstractBuild<P,R>> |
Common part between
MavenModule and MavenModuleSet. |
| AbstractMavenProject.MavenModuleDependency | |
| ExecutedMojo |
Persisted record of mojo execution.
|
| ExecutedMojo.Cache |
Used during the HTML rendering to cache the index.
|
| FilteredChangeLogSet |
ChangeLogSet implementation used for MavenBuild. |
| Maven31ProcessFactory |
AbstractMavenProcessFactory for Maven 3. |
| Maven32ProcessFactory |
AbstractMavenProcessFactory for Maven 3.2.x |
| Maven33ProcessFactory |
AbstractMavenProcessFactory for Maven 3.3.x |
| Maven35ProcessFactory |
AbstractMavenProcessFactory for Maven 3.5.x |
| Maven3Builder | |
| Maven3Builder.Maven3BuilderRequest | |
| Maven3ProcessFactory |
AbstractMavenProcessFactory for Maven 3. |
| Maven3ProcessFactory.GetClassWorldsJar |
Finds classworlds.jar
|
| MavenBuild |
Run for MavenModule. |
| MavenBuilder |
Callable that invokes Maven CLI (in process) and drives a build. |
| MavenBuildInformation | |
| MavenBuildProxy.Filter<CORE extends MavenBuildProxy> |
Filter for
MavenBuildProxy. |
| MavenBuildProxy.Filter.AsyncInvoker |
Callable for invoking MavenBuildProxy.BuildCallable asynchronously. |
| MavenBuildProxy2.Filter<CORE extends MavenBuildProxy2> |
Filter for
MavenBuildProxy2. |
| MavenEmbedderRequest | |
| MavenModule |
Job that builds projects based on Maven2. |
| MavenModuleSet |
Group of
MavenModules. |
| MavenModuleSet.DescriptorImpl | |
| MavenModuleSetBuild |
Build for MavenModuleSet. |
| MavenModuleSetBuild.SimpleTransferListener |
will log in the
TaskListener when transferFailed and transferSucceeded |
| MavenProbeAction |
UI for probing Maven process.
|
| MavenReporter |
Listens to the build execution of
MavenBuild,
and normally records some information and exposes thoses
in MavenBuild later. |
| MavenReporterDescriptor |
Descriptor for MavenReporter. |
| MavenReporters | |
| MavenReportInfo |
Information about
MavenReport that was executed. |
| MavenTestDataPublisher |
Augments
SurefireReport by executing TestDataPublishers. |
| MavenTestDataPublisher.DescriptorImpl | |
| MavenUtil | |
| MavenVersionCallable | |
| Messages |
Generated localization support class.
|
| ModuleDependency |
group id + artifact id + version and a flag to know if it's a plugin
|
| ModuleName |
Version independent name of a Maven project.
|
| MojoInfo |
Information about Mojo to be executed.
|
| MojoInfo.Maven3ProvidesNoAccessToMojo |
Instance will be set to
MojoInfo.mojo to avoid NPE in plugins. |
| NeedsFullBuildAction |
Action signalling that this
MavenModuleSet needs a full build
on the next run even if it's marked as an incremental build. |
| PlexusModuleContributor |
Contributes additional code into Plexus container when we run Maven.
|
| PlexusModuleContributorFactory |
Contributes additional code into Plexus container when we run Maven.
|
| PluginImpl | |
| PluginName |
Identifier of a specific version of a Maven plugin
that consists of groupId, artifactId, and version.
|
| ProcessCache |
Hold on to launched Maven processes so that multiple builds
can reuse the same Maven JVM, which leads to improved performance.
|
| ProcessCache.NewProcess | |
| RedeployPublisher |
Publisher for MavenModuleSetBuild to deploy artifacts
after a build is fully succeeded. |
| RedeployPublisher.DescriptorImpl | |
| RedeployPublisher.WrappedArtifactRepository | |
| TcpSocketHostLocator |
Identify the Host name to use from maven-agent to connect to to jenkins slave agent TCP socket.
|
| UnbuiltModuleAction |
Action which remembers all module which have not been built since the last successful build
though they should have been, because they have SCM changes since then.
|
| Enum | Description |
|---|---|
| MavenUtil.MavenVersion |
One of the pain points of the freestyle project is that you have to configure a lot of things, such as where to look for test reports, what files to archive, where the findbugs report would go. But if we focus on Maven, we should be able to eliminate much of the configuration, since it introduces more uniform structures. So that's what this plugin does — at the expense of limiting the build tool to Maven, automate much of the configuration.
The core idea of the implementation is to monitor what Maven does, so that we can see which mojos are executed with what parameters. In this way, we can tell when/where javadoc is generated, if source code compilation had an error, and access other rich information about the project build process.
To make communication between Hudson JVM and Maven JVM easier, we use the remoting technology that Hudson uses between the master and the slave. We start a new JVM and bootstraps to the remoting, then use a socket to establish a connection to this process. This part of the code is in the "maven-agent" module. We then bootstrap Maven.
To intercept what's going on in Maven, we extend some key components in Maven, and configure Plexus in such a way that our components are used instead of default ones. Because injected components need to live in a different classloader, they are packaged in a separate "maven-interceptor" module. We also bring in objects (MavenReporters) from plugins via remoting, and distribute intercepted events to these guys. They can then digest information and send it back to Hudson JVM.
In addition to all this, we use embedded Maven to parse POMs, so that we can figure out the structure of the project before we even do a build (this information is used for example to set up dependencies among jobs.) This turns out to be rather fragile (in the presence of profiles that are activated by system property, platform, etc., which makes the effective POM different when in Hudson vs when built for real.)
Copyright © 2016–2017. All rights reserved.