|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.codehaus.plexus.logging.AbstractLogEnabled
org.sonatype.plexus.build.incremental.DefaultBuildContext
public class DefaultBuildContext
Filesystem based non-incremental build context implementation which behaves as if all files
were just created. More specifically,
hasDelta returns true
for all paths
newScanner returns Scanner that scans all files under provided basedir
newDeletedScanner always returns empty scanner.
isIncremental returns false
null
Constructor Summary | |
---|---|
DefaultBuildContext()
|
Method Summary | |
---|---|
void |
addError(File file,
int line,
int column,
String message,
Throwable cause)
|
void |
addWarning(File file,
int line,
int column,
String message,
Throwable cause)
|
Object |
getValue(String key)
Returns value associated with key during previous mojo execution. |
boolean |
hasDelta(File file)
Returns true if the file has changed since last build or is not
under basedir. |
boolean |
hasDelta(List relpaths)
Returns true if any file or folder identified by relpaths has
changed since last build. |
boolean |
hasDelta(String relpath)
Returns true if file or folder identified by relpath has
changed since last build. |
boolean |
isIncremental()
Returns true if this build context is incremental. |
boolean |
isUptodate(File target,
File source)
Returns true, if the target file exists and is uptodate compared to the source file. |
org.codehaus.plexus.util.Scanner |
newDeleteScanner(File basedir)
Returned Scanner scans basedir for files and directories
deleted since last build. |
OutputStream |
newFileOutputStream(File file)
Returns new OutputStream that writes to the file . |
org.codehaus.plexus.util.Scanner |
newScanner(File basedir)
Convenience method, fully equal to newScanner(basedir, false) |
org.codehaus.plexus.util.Scanner |
newScanner(File basedir,
boolean ignoreDelta)
Returned Scanner scans files and folders under basedir . |
void |
refresh(File file)
Indicates that the file or folder content has been modified during the build. |
void |
setValue(String key,
Object value)
Associate specified key with specified value
in the build context. |
Methods inherited from class org.codehaus.plexus.logging.AbstractLogEnabled |
---|
enableLogging, getLogger, setupLogger, setupLogger, setupLogger |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public DefaultBuildContext()
Method Detail |
---|
public boolean hasDelta(String relpath)
BuildContext
true
if file or folder identified by relpath
has
changed since last build.
hasDelta
in interface BuildContext
relpath
- is path relative to build context basedirpublic boolean hasDelta(File file)
BuildContext
true
if the file has changed since last build or is not
under basedir.
hasDelta
in interface BuildContext
public boolean hasDelta(List relpaths)
BuildContext
true
if any file or folder identified by relpaths
has
changed since last build.
hasDelta
in interface BuildContext
relpaths
- Listpublic OutputStream newFileOutputStream(File file) throws IOException
BuildContext
file
.
Files changed using OutputStream returned by this method do not need to be
explicitly refreshed using BuildContext.refresh(File)
.
As an optional optimisation, OutputStreams created by incremental build
context will attempt to avoid writing to the file if file content
has not changed.
newFileOutputStream
in interface BuildContext
IOException
public org.codehaus.plexus.util.Scanner newScanner(File basedir)
BuildContext
newScanner
in interface BuildContext
public void refresh(File file)
BuildContext
refresh
in interface BuildContext
BuildContext.newFileOutputStream(File)
public org.codehaus.plexus.util.Scanner newDeleteScanner(File basedir)
BuildContext
basedir
for files and directories
deleted since last build. Returns empty Scanner if basedir
is not under this build context basedir.
newDeleteScanner
in interface BuildContext
public org.codehaus.plexus.util.Scanner newScanner(File basedir, boolean ignoreDelta)
BuildContext
basedir
.
If this is an incremental build context and ignoreDelta
is false
, the scanner will only "see" files and folders with
content changes since last build.
If ignoreDelta
is true
, the scanner will "see" all
files and folders.
Please beware that ignoreDelta=false does NOT work reliably for operations
that copy resources from source to target locations. Returned Scanner
only scans changed source resources and it does not consider changed or deleted
target resources. This results in missing or stale target resources.
Starting with 0.5.0, recommended way to process resources is to use
#newScanner(basedir,true) to locate all source resources and BuildContext.isUptodate(File, File)
to optimized processing of uptodate target resources.
Returns empty Scanner if basedir
is not under this build context basedir.
newScanner
in interface BuildContext
http://jira.codehaus.org/browse/MSHARED-125
public boolean isIncremental()
BuildContext
true
if this build context is incremental.
Scanners created by BuildContext.newScanner(File)
of an incremental build context
will ignore files and folders that were not changed since last build.
Additionally, BuildContext.newDeleteScanner(File)
will scan files and directories
deleted since last build.
isIncremental
in interface BuildContext
public Object getValue(String key)
BuildContext
key
during previous mojo execution.
This method always returns null
for non-incremental builds
(i.e., BuildContext.isIncremental()
returns false
) and mojos are
expected to fall back to full, non-incremental behaviour.
getValue
in interface BuildContext
BuildContext.setValue(String, Object)
,
BuildContext.isIncremental()
public void setValue(String key, Object value)
BuildContext
key
with specified value
in the build context.
Primary (and the only) purpose of this method is to allow preservation of
state needed for proper incremental behaviour between consecutive executions
of the same mojo needed to.
For example, maven-plugin-plugin:descriptor mojo
can store collection of extracted MojoDescritpor during first invocation. Then
on each consecutive execution maven-plugin-plugin:descriptor will only need
to extract MojoDescriptors for changed files.
setValue
in interface BuildContext
BuildContext.getValue(String)
public void addWarning(File file, int line, int column, String message, Throwable cause)
addWarning
in interface BuildContext
public void addError(File file, int line, int column, String message, Throwable cause)
addError
in interface BuildContext
public boolean isUptodate(File target, File source)
BuildContext
isUptodate
in interface BuildContext
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |