mirror of https://github.com/apache/maven.git
Just adding some detail, from my thoughts over lunch...
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@163886 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
232139d910
commit
0128ae2758
|
@ -1,3 +1,13 @@
|
||||||
|
---
|
||||||
|
Offline Mode Design
|
||||||
|
---
|
||||||
|
John Casey
|
||||||
|
---
|
||||||
|
08-April-2005
|
||||||
|
---
|
||||||
|
|
||||||
|
Offline Mode Design
|
||||||
|
|
||||||
* Assumptions: What is Offline?
|
* Assumptions: What is Offline?
|
||||||
|
|
||||||
For the purposes of determining the areas sensitive to offline status,
|
For the purposes of determining the areas sensitive to offline status,
|
||||||
|
@ -22,8 +32,44 @@
|
||||||
* Not all "remote" repositories will fail. Specifically, if the remote
|
* Not all "remote" repositories will fail. Specifically, if the remote
|
||||||
repo uses the file:// protocol, and it doesn't refer to a shared
|
repo uses the file:// protocol, and it doesn't refer to a shared
|
||||||
filesystem, it will continue to be available.
|
filesystem, it will continue to be available.
|
||||||
|
|
||||||
|
The question remaining is: Which level of offline mode will we support? It
|
||||||
|
seems reasonable to assume that users will be able to tell when localhost is
|
||||||
|
not active (in most cases, localhost should be available, even if the rest of
|
||||||
|
the network is not). Therefore, let's concentrate on the state where no
|
||||||
|
network <beyond localhost> exists, and leave the more extreme state to users
|
||||||
|
to diagnose and correct as necessary.
|
||||||
|
|
||||||
|
* Why is Offline Mode Important?
|
||||||
|
|
||||||
|
Offline mode is essential for breaking the requirement that m2 operate in a
|
||||||
|
network-connected environment. It means legitimizing a development environment
|
||||||
|
in which there is no network connection, and providing a robust m2 service
|
||||||
|
offering in such circumstances. Introduction of offline mode allows m2 to
|
||||||
|
anticipate the inevitable network failures that accompany being physically
|
||||||
|
disconnected from the network, and adjust it's behavior accordingly.
|
||||||
|
|
||||||
|
It is more than simply understanding that m2 cannot go and check for the
|
||||||
|
latest version of some snapshot artifact. If m2 is offline, SCM operations cannot
|
||||||
|
succeed; no artifact downloads can take place, regardless of whether they are
|
||||||
|
snapshot versions; artifact deployment cannot take place; certain types of
|
||||||
|
tests cannot be setup, since the container used to run them cannot be reached
|
||||||
|
or started.
|
||||||
|
|
||||||
|
All of these operations will produce their own unique errors in the absence of
|
||||||
|
a coordinated offline strategy. In addition, efforts to unite these failing
|
||||||
|
behaviors behind a consistent user interface is much, much more difficult if
|
||||||
|
the system can't tell whether it has access to the network required by these
|
||||||
|
operations.
|
||||||
|
|
||||||
|
Offline mode really means anticipating a lack of network connectivity, and as
|
||||||
|
a result turning off certain services provided by m2 and providing a coherent
|
||||||
|
way of predicting and reporting when network-related failures will take place.
|
||||||
|
It means warning users that since the network is missing, certain features and
|
||||||
|
operations will be unavailable, rather than simply waiting for those operations
|
||||||
|
to fail, then trying to help users decipher the error messages they get as a
|
||||||
|
result.
|
||||||
|
|
||||||
* Implications for Resolution
|
* Implications for Resolution
|
||||||
|
|
||||||
** Dependency Resolution
|
** Dependency Resolution
|
||||||
|
@ -53,6 +99,11 @@
|
||||||
This can be a problem if the tests are more than simple unit tests;
|
This can be a problem if the tests are more than simple unit tests;
|
||||||
that is, if they require configuration of a server process, and
|
that is, if they require configuration of a server process, and
|
||||||
subsequent testing in-container.
|
subsequent testing in-container.
|
||||||
|
|
||||||
|
Since we're only going to concern ourselves with states where localhost is
|
||||||
|
still active, we only need to worry about this case when the server container
|
||||||
|
is <<not>> installed on localhost. This allows the popular pattern of starting
|
||||||
|
a server container in-JVM, running tests against it, and shutting it down.
|
||||||
|
|
||||||
** SCM mojos
|
** SCM mojos
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue