Index: src/java/org/apache/ivyde/eclipse/cpcontainer/ClasspathSetup.java =================================================================== --- src/java/org/apache/ivyde/eclipse/cpcontainer/ClasspathSetup.java (revision 1535001) +++ src/java/org/apache/ivyde/eclipse/cpcontainer/ClasspathSetup.java (working copy) @@ -25,6 +25,8 @@ private boolean resolveInWorkspace; + private boolean resolveTransitiveFalse; + private List/* */acceptedTypes; private boolean alphaOrder; @@ -42,6 +44,7 @@ public void set(ClasspathSetup setup) { this.resolveInWorkspace = setup.resolveInWorkspace; + this.resolveTransitiveFalse = setup.resolveTransitiveFalse; this.acceptedTypes = setup.acceptedTypes; this.alphaOrder = setup.alphaOrder; this.retrievedClasspath = setup.retrievedClasspath; @@ -56,6 +59,14 @@ this.resolveInWorkspace = resolveInWorkspace; } + public boolean isResolveTransitiveFalse() { + return resolveTransitiveFalse; + } + + public void setResolveTransitiveFalse(boolean resolveTransitiveFalse) { + this.resolveTransitiveFalse = resolveTransitiveFalse; + } + public List getAcceptedTypes() { return acceptedTypes; } Index: src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainer.java =================================================================== --- src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainer.java (revision 1535001) +++ src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainer.java (working copy) @@ -123,6 +123,7 @@ ResolveRequest request = new ResolveRequest(new IvyClasspathResolver(this, usePreviousResolveIfExist), getState()); request.setInWorkspace(getConf().getInheritedClasspathSetup().isResolveInWorkspace()); + request.setTransitiveFalse(getConf().getInheritedClasspathSetup().isResolveTransitiveFalse()); IvyResolveJob resolveJob = IvyPlugin.getDefault().getIvyResolveJob(); if (monitor != null) { return resolveJob.launchRequest(request, monitor); Index: src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerConfAdapter.java =================================================================== --- src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerConfAdapter.java (revision 1535001) +++ src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerConfAdapter.java (working copy) @@ -174,6 +174,9 @@ } else if (parameter[0].equals("resolveInWorkspace")) { classpathSetup.setResolveInWorkspace(Boolean.valueOf(value).booleanValue()); conf.setClassthProjectSpecific(true); + }else if (parameter[0].equals("resolveTransitiveFalse")) { + classpathSetup.setResolveTransitiveFalse(Boolean.valueOf(value).booleanValue()); + conf.setClassthProjectSpecific(true); } else if (parameter[0].equals("resolveBeforeLaunch")) { advancedSetup.setResolveBeforeLaunch(Boolean.valueOf(value).booleanValue()); conf.setAdvancedProjectSpecific(true); @@ -376,6 +379,7 @@ append(path, "acceptedTypes", setup.getAcceptedTypes()); append(path, "alphaOrder", setup.isAlphaOrder()); append(path, "resolveInWorkspace", setup.isResolveInWorkspace()); + append(path, "resolveTransitiveFalse", setup.isResolveTransitiveFalse()); append(path, "retrievedClasspath", setup.isRetrievedClasspath()); if (setup.isRetrievedClasspath()) { RetrieveSetup retrieveSetup = setup.getRetrieveSetup(); Index: src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerState.java =================================================================== --- src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerState.java (revision 1535001) +++ src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerState.java (working copy) @@ -64,6 +64,10 @@ return conf.getInheritedClasspathSetup().isResolveInWorkspace(); } + protected boolean isResolveTransitiveFalse() { + return conf.getInheritedClasspathSetup().isResolveTransitiveFalse(); + } + public String toString() { return conf.toString(); } Index: src/java/org/apache/ivyde/eclipse/IvyDERuntimeClasspathEntryResolver.java =================================================================== --- src/java/org/apache/ivyde/eclipse/IvyDERuntimeClasspathEntryResolver.java (revision 1535001) +++ src/java/org/apache/ivyde/eclipse/IvyDERuntimeClasspathEntryResolver.java (working copy) @@ -88,6 +88,8 @@ request.setForceFailOnError(true); request.setInWorkspace(ivycp.getConf().getInheritedClasspathSetup() .isResolveInWorkspace()); + request.setTransitiveFalse(ivycp.getConf().getInheritedClasspathSetup() + .isResolveTransitiveFalse()); IvyResolveJob resolveJob = IvyPlugin.getDefault().getIvyResolveJob(); IStatus status = resolveJob.launchRequest(request, new NullProgressMonitor()); if (status.getCode() != IStatus.OK) { Index: src/java/org/apache/ivyde/eclipse/resolve/IvyResolver.java =================================================================== --- src/java/org/apache/ivyde/eclipse/resolve/IvyResolver.java (revision 1535001) +++ src/java/org/apache/ivyde/eclipse/resolve/IvyResolver.java (working copy) @@ -74,6 +74,8 @@ private boolean useCacheOnly = IvyPlugin.getPreferenceStoreHelper().isOffline(); + private boolean useTransitiveFalse = false; + private boolean useExtendedResolveId = false; public IvyResolver(String ivyXmlPath, List confInput, IProject project) { @@ -102,6 +104,15 @@ this.useCacheOnly = useCacheOnly; } + public boolean isUseTransitiveFalse() { + return useTransitiveFalse; + } + + public void setUseTransitiveFalse(boolean useTransitiveFalse) { + this.useTransitiveFalse = useTransitiveFalse; + } + + public String getIvyXmlPath() { return ivyXmlPath; } @@ -220,6 +231,8 @@ resolveOption.setValidate(ivy.getSettings().doValidate()); resolveOption.setUseCacheOnly(useCacheOnly); resolveOption.setResolveId(IvyClasspathUtil.buildResolveId(useExtendedResolveId, md)); + setTransitiveResolveOption(resolveOption); + ResolveReport report = ivy.resolve(md, resolveOption); ResolveResult result = new ResolveResult(report); @@ -257,6 +270,7 @@ ResolveOptions options = new ResolveOptions(); options.setRefresh(true); options.setUseCacheOnly(true); + setTransitiveResolveOption(options); ResolvedModuleRevision dependency = depResolver.getDependency(depDescriptor, new ResolveData(ivy.getResolveEngine(), options)); if (dependency != null) { @@ -334,6 +348,12 @@ return Status.OK_STATUS; } + private void setTransitiveResolveOption(ResolveOptions resolveOption) { + if(useTransitiveFalse) { + resolveOption.setTransitive(false); + } + } + /** * This function will be called by the {@link IvyResolveJob} after all resolve has been * accomplished. Note that this function will be called even if the resolve failed. Index: src/java/org/apache/ivyde/eclipse/resolve/ResolveRequest.java =================================================================== --- src/java/org/apache/ivyde/eclipse/resolve/ResolveRequest.java (revision 1535001) +++ src/java/org/apache/ivyde/eclipse/resolve/ResolveRequest.java (working copy) @@ -58,6 +58,14 @@ return inWorkspace; } + public void setTransitiveFalse(boolean transitiveFalse) { + this.resolver.setUseTransitiveFalse(transitiveFalse); + } + + public boolean isTransitiveFalse() { + return resolver.isUseTransitiveFalse(); + } + public String toString() { return resolver.toString(); } Index: src/java/org/apache/ivyde/eclipse/retrieve/StandaloneRetrieveSetupState.java =================================================================== --- src/java/org/apache/ivyde/eclipse/retrieve/StandaloneRetrieveSetupState.java (revision 1535001) +++ src/java/org/apache/ivyde/eclipse/retrieve/StandaloneRetrieveSetupState.java (working copy) @@ -55,4 +55,7 @@ return false; } + protected boolean isResolveTransitiveFalse() { + return false; + } } Index: src/java/org/apache/ivyde/eclipse/ui/ClasspathSetupEditor.java =================================================================== --- src/java/org/apache/ivyde/eclipse/ui/ClasspathSetupEditor.java (revision 1535001) +++ src/java/org/apache/ivyde/eclipse/ui/ClasspathSetupEditor.java (working copy) @@ -40,6 +40,8 @@ private Button resolveInWorkspaceCheck; + private Button resolveTransitiveFalseCheck; + private Label alphaOrderLabel; private Combo alphaOrderCheck; @@ -65,6 +67,13 @@ resolveInWorkspaceCheck .setToolTipText("Will replace jars on the classpath with workspace projects"); + resolveTransitiveFalseCheck = new Button(this, SWT.CHECK); + resolveTransitiveFalseCheck.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, + false, 2, 1)); + resolveTransitiveFalseCheck.setText("Resolve dependency with transitivity disabled"); + resolveTransitiveFalseCheck + .setToolTipText("Will resolve dependency with transitivity disabled regardless to setting in ivy.xml"); + acceptedTypesLabel = new Label(this, SWT.NONE); acceptedTypesLabel.setText("Accepted types:"); @@ -111,6 +120,7 @@ public void init(ClasspathSetup setup) { resolveInWorkspaceCheck.setSelection(setup.isResolveInWorkspace()); + resolveTransitiveFalseCheck.setSelection(setup.isResolveTransitiveFalse()); acceptedTypesText.setText(IvyClasspathUtil.concat(setup.getAcceptedTypes())); alphaOrderCheck.select(setup.isAlphaOrder() ? 1 : 0); selectCache.setSelection(!setup.isRetrievedClasspath()); @@ -122,6 +132,7 @@ public ClasspathSetup getClasspathSetup() { ClasspathSetup setup = new ClasspathSetup(); setup.setResolveInWorkspace(resolveInWorkspaceCheck.getSelection()); + setup.setResolveTransitiveFalse(resolveTransitiveFalseCheck.getSelection()); setup.setAcceptedTypes(IvyClasspathUtil.split(acceptedTypesText.getText())); setup.setAlphaOrder(alphaOrderCheck.getSelectionIndex() == 1); setup.setRetrievedClasspath(selectRetrieve.getSelection()); @@ -133,6 +144,7 @@ public void setEnabled(boolean enabled) { resolveInWorkspaceCheck.setEnabled(enabled); + resolveTransitiveFalseCheck.setEnabled(enabled); acceptedTypesLabel.setEnabled(enabled); acceptedTypesText.setEnabled(enabled); alphaOrderLabel.setEnabled(enabled); Index: src/java/org/apache/ivyde/eclipse/ui/preferences/IvyDEPreferenceStoreHelper.java =================================================================== --- src/java/org/apache/ivyde/eclipse/ui/preferences/IvyDEPreferenceStoreHelper.java (revision 1535001) +++ src/java/org/apache/ivyde/eclipse/ui/preferences/IvyDEPreferenceStoreHelper.java (working copy) @@ -72,6 +72,7 @@ public ClasspathSetup getClasspathSetup() { ClasspathSetup setup = new ClasspathSetup(); setup.setResolveInWorkspace(prefStore.getBoolean(PreferenceConstants.RESOLVE_IN_WORKSPACE)); + setup.setResolveTransitiveFalse(prefStore.getBoolean(PreferenceConstants.RESOLVE_TRANSITIVE_FALSE)); setup.setAcceptedTypes(IvyClasspathUtil.split(prefStore .getString(PreferenceConstants.ACCEPTED_TYPES))); setup.setAlphaOrder(prefStore.getBoolean(PreferenceConstants.ALPHABETICAL_ORDER)); @@ -88,6 +89,7 @@ public void setClasspathSetup(ClasspathSetup setup) { prefStore.setValue(PreferenceConstants.RESOLVE_IN_WORKSPACE, setup.isResolveInWorkspace()); + prefStore.setValue(PreferenceConstants.RESOLVE_TRANSITIVE_FALSE, setup.isResolveTransitiveFalse()); prefStore.setValue(PreferenceConstants.ACCEPTED_TYPES, IvyClasspathUtil.concat(setup.getAcceptedTypes())); prefStore.setValue(PreferenceConstants.ALPHABETICAL_ORDER, setup.isAlphaOrder()); Index: src/java/org/apache/ivyde/eclipse/ui/preferences/PreferenceConstants.java =================================================================== --- src/java/org/apache/ivyde/eclipse/ui/preferences/PreferenceConstants.java (revision 1535001) +++ src/java/org/apache/ivyde/eclipse/ui/preferences/PreferenceConstants.java (working copy) @@ -66,6 +66,8 @@ public static final String RESOLVE_IN_WORKSPACE = "resolveInWorkspace"; + public static final String RESOLVE_TRANSITIVE_FALSE = "resolveTransitiveFalse"; + public static final String RESOLVE_BEFORE_LAUNCH = "resolveBeforeLaunch"; public static final String USE_EXTENDED_RESOLVE_ID = "useExtendedResolveId"; Index: src/java/org/apache/ivyde/eclipse/ui/preferences/PreferenceInitializer.java =================================================================== --- src/java/org/apache/ivyde/eclipse/ui/preferences/PreferenceInitializer.java (revision 1535001) +++ src/java/org/apache/ivyde/eclipse/ui/preferences/PreferenceInitializer.java (working copy) @@ -59,6 +59,8 @@ public static final boolean DEFAULT_RESOLVE_IN_WORKSPACE = false; + public static final boolean DEFAULT_RESOLVE_TRANSITIVE_FALSE = false; + public static final boolean DEFAULT_RETRIEVED_CLASSPATH = false; private static final String DEFAULT_RETRIEVED_CLASSPATH_PATTERN = "lib/[artifact]-[revision].[ext]"; @@ -81,6 +83,7 @@ DEFAULT_CLASSPATH_SETUP.setAcceptedTypes(IvyClasspathUtil.split(DEFAULT_ACCEPTED_TYPES)); DEFAULT_CLASSPATH_SETUP.setAlphaOrder(DEFAULT_ALPHABETICAL_ORDER); DEFAULT_CLASSPATH_SETUP.setResolveInWorkspace(DEFAULT_RESOLVE_IN_WORKSPACE); + DEFAULT_CLASSPATH_SETUP.setResolveTransitiveFalse(DEFAULT_RESOLVE_TRANSITIVE_FALSE); DEFAULT_CLASSPATH_SETUP.setRetrievedClasspath(DEFAULT_RETRIEVED_CLASSPATH); DEFAULT_CLASSPATH_SETUP.setRetrieveSetup(DEFAULT_RETRIEVED_CLASSPATH_SETUP); } @@ -157,6 +160,7 @@ store.setDefault(PreferenceConstants.ALPHABETICAL_ORDER, DEFAULT_ALPHABETICAL_ORDER); store.setDefault(PreferenceConstants.RESOLVE_IN_WORKSPACE, DEFAULT_RESOLVE_IN_WORKSPACE); + store.setDefault(PreferenceConstants.RESOLVE_TRANSITIVE_FALSE, DEFAULT_RESOLVE_TRANSITIVE_FALSE); store.setDefault(PreferenceConstants.RESOLVE_BEFORE_LAUNCH, DEFAULT_RESOLVE_BEFORE_LAUNCH); store.setDefault(PreferenceConstants.PROPERTY_FILES, DEFAULT_PROPERTY_FILES); store.setDefault(PreferenceConstants.LOAD_SETTINGS_ON_DEMAND,