IDEA-105837 Intellij Idea caches maven snapshot dependencies forever

This commit is contained in:
Sergey Evdokimov
2014-02-27 19:25:52 +04:00
parent 399fdef08e
commit a3bbf916e4
5 changed files with 28 additions and 13 deletions
@@ -29,7 +29,8 @@ public interface MavenServerEmbedder extends Remote {
void customize(@Nullable MavenWorkspaceMap workspaceMap,
boolean failOnUnresolvedDependency,
@NotNull MavenServerConsole console,
@NotNull MavenServerProgressIndicator indicator) throws RemoteException;
@NotNull MavenServerProgressIndicator indicator,
boolean alwaysUpdateSnapshots) throws RemoteException;
@NotNull
MavenServerExecutionResult resolveProject(@NotNull File file,
@@ -586,7 +586,8 @@ public class Maven2ServerEmbedderImpl extends MavenRemoteObject implements Maven
public void customize(@Nullable MavenWorkspaceMap workspaceMap,
boolean failOnUnresolvedDependency,
@NotNull MavenServerConsole console,
@NotNull MavenServerProgressIndicator indicator) {
@NotNull MavenServerProgressIndicator indicator,
boolean alwaysUpdateSnapshots) {
try {
((CustomArtifactFactory)getComponent(ArtifactFactory.class)).customize();
((CustomArtifactFactory)getComponent(ProjectArtifactFactory.class)).customize();
@@ -111,6 +111,8 @@ public class Maven3ServerEmbedderImpl extends MavenRemoteObject implements Maven
private Date myBuildStartTime;
private boolean myAlwaysUpdateSnapshots;
public Maven3ServerEmbedderImpl(MavenServerSettings settings) throws RemoteException {
File mavenHome = settings.getMavenHome();
if (mavenHome != null) {
@@ -269,7 +271,8 @@ public class Maven3ServerEmbedderImpl extends MavenRemoteObject implements Maven
public void customize(@Nullable MavenWorkspaceMap workspaceMap,
boolean failOnUnresolvedDependency,
@NotNull MavenServerConsole console,
@NotNull MavenServerProgressIndicator indicator) throws RemoteException {
@NotNull MavenServerProgressIndicator indicator,
boolean alwaysUpdateSnapshots) throws RemoteException {
try {
((CustomMaven3ArtifactFactory)getComponent(ArtifactFactory.class)).customize();
@@ -281,6 +284,8 @@ public class Maven3ServerEmbedderImpl extends MavenRemoteObject implements Maven
myBuildStartTime = new Date();
myAlwaysUpdateSnapshots = alwaysUpdateSnapshots;
setConsoleAndIndicator(console, new MavenServerProgressIndicatorWrapper(indicator));
}
catch (Exception e) {
@@ -349,6 +354,8 @@ public class Maven3ServerEmbedderImpl extends MavenRemoteObject implements Maven
final MavenExecutionRequest request =
createRequest(file, activeProfiles, Collections.<String>emptyList(), Collections.<String>emptyList());
request.setUpdateSnapshots(myAlwaysUpdateSnapshots);
final AtomicReference<MavenExecutionResult> ref = new AtomicReference<MavenExecutionResult>();
executeWithMavenSession(request, new Runnable() {
@@ -1206,7 +1206,7 @@ public class MavenProjectsTree {
@NotNull ResolveContext context,
@NotNull MavenProgressIndicator process) throws MavenProcessCanceledException {
MavenEmbedderWrapper embedder = embeddersManager.getEmbedder(MavenEmbeddersManager.FOR_DEPENDENCIES_RESOLVE);
embedder.customizeForResolve(getWorkspaceMap(), console, process);
embedder.customizeForResolve(getWorkspaceMap(), console, process, generalSettings.isAlwaysUpdateSnapshots());
try {
process.checkCanceled();
@@ -1321,7 +1321,7 @@ public class MavenProjectsTree {
@NotNull MavenProgressIndicator process,
@NotNull EmbedderTask task) throws MavenProcessCanceledException {
MavenEmbedderWrapper embedder = embeddersManager.getEmbedder(embedderKind);
embedder.customizeForResolve(getWorkspaceMap(), console, process);
embedder.customizeForResolve(getWorkspaceMap(), console, process, false);
embedder.clearCachesFor(mavenProject.getMavenId());
try {
task.run(embedder);
@@ -49,7 +49,7 @@ public abstract class MavenEmbedderWrapper extends RemoteObjectWrapper<MavenServ
}
public void customizeForResolve(MavenConsole console, MavenProgressIndicator indicator) {
setCustomization(console, indicator, null, false);
setCustomization(console, indicator, null, false, false);
perform(new Retriable<Object>() {
@Override
public Object execute() throws RemoteException {
@@ -59,8 +59,8 @@ public abstract class MavenEmbedderWrapper extends RemoteObjectWrapper<MavenServ
});
}
public void customizeForResolve(MavenWorkspaceMap workspaceMap, MavenConsole console, MavenProgressIndicator indicator) {
setCustomization(console, indicator, workspaceMap, false);
public void customizeForResolve(MavenWorkspaceMap workspaceMap, MavenConsole console, MavenProgressIndicator indicator, boolean alwaysUpdateSnapshot) {
setCustomization(console, indicator, workspaceMap, false, alwaysUpdateSnapshot);
perform(new Retriable<Object>() {
@Override
public Object execute() throws RemoteException {
@@ -73,7 +73,7 @@ public abstract class MavenEmbedderWrapper extends RemoteObjectWrapper<MavenServ
public void customizeForStrictResolve(MavenWorkspaceMap workspaceMap,
MavenConsole console,
MavenProgressIndicator indicator) {
setCustomization(console, indicator, workspaceMap, true);
setCustomization(console, indicator, workspaceMap, true, false);
perform(new Retriable<Object>() {
@Override
public Object execute() throws RemoteException {
@@ -87,7 +87,8 @@ public abstract class MavenEmbedderWrapper extends RemoteObjectWrapper<MavenServ
getOrCreateWrappee().customize(myCustomization.workspaceMap,
myCustomization.failOnUnresolvedDependency,
myCustomization.console,
myCustomization.indicator);
myCustomization.indicator,
myCustomization.alwaysUpdateSnapshot);
}
@NotNull
@@ -243,12 +244,14 @@ public abstract class MavenEmbedderWrapper extends RemoteObjectWrapper<MavenServ
private synchronized void setCustomization(MavenConsole console,
MavenProgressIndicator indicator,
MavenWorkspaceMap workspaceMap,
boolean failOnUnresolvedDependency) {
boolean failOnUnresolvedDependency,
boolean alwaysUpdateSnapshot) {
resetCustomization();
myCustomization = new Customization(MavenServerManager.wrapAndExport(console),
MavenServerManager.wrapAndExport(indicator),
workspaceMap,
failOnUnresolvedDependency);
failOnUnresolvedDependency,
alwaysUpdateSnapshot);
}
private synchronized void resetCustomization() {
@@ -276,15 +279,18 @@ public abstract class MavenEmbedderWrapper extends RemoteObjectWrapper<MavenServ
private final MavenWorkspaceMap workspaceMap;
private final boolean failOnUnresolvedDependency;
private final boolean alwaysUpdateSnapshot;
private Customization(MavenServerConsole console,
MavenServerProgressIndicator indicator,
MavenWorkspaceMap workspaceMap,
boolean failOnUnresolvedDependency) {
boolean failOnUnresolvedDependency,
boolean alwaysUpdateSnapshot) {
this.console = console;
this.indicator = indicator;
this.workspaceMap = workspaceMap;
this.failOnUnresolvedDependency = failOnUnresolvedDependency;
this.alwaysUpdateSnapshot = alwaysUpdateSnapshot;
}
}
}