blob: 82cec24868b2ab48c0bf03531d490d2da91e369b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
/*
* Copyright 2000-2012 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.jps.model.java;
import com.intellij.openapi.util.Condition;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.module.JpsDependenciesEnumerator;
import org.jetbrains.jps.model.module.JpsDependencyElement;
/**
* Interface for convenient processing dependencies of a java module or a java project. Allows to process {@link org.jetbrains.jps.model.module.JpsDependencyElement}s and collect classes
* and source roots.
* <p/>
* Use {@link org.jetbrains.jps.model.java.JpsJavaExtensionService#dependencies(org.jetbrains.jps.model.module.JpsModule)} to process dependencies of a module
* and use {@link org.jetbrains.jps.model.java.JpsJavaExtensionService#dependencies(org.jetbrains.jps.model.JpsProject)} to process dependencies of all modules in a project.<p>
*
* Note that all configuration methods modify {@link org.jetbrains.jps.model.module.JpsDependenciesEnumerator} instance instead of creating a new one.
*
* @author nik
*/
public interface JpsJavaDependenciesEnumerator extends JpsDependenciesEnumerator {
/**
* Skip test dependencies
*
* @return this instance
*/
@NotNull
JpsJavaDependenciesEnumerator productionOnly();
/**
* Skip runtime-only dependencies
*
* @return this instance
*/
@NotNull
JpsJavaDependenciesEnumerator compileOnly();
/**
* Skip compile-only dependencies
*
* @return this instance
*/
@NotNull
JpsJavaDependenciesEnumerator runtimeOnly();
/**
* Skip not exported dependencies. If this method is called after {@link #recursively()} direct non-exported dependencies won't be skipped
*
* @return this instance
*/
@NotNull
JpsJavaDependenciesEnumerator exportedOnly();
@NotNull
@Override
JpsJavaDependenciesEnumerator recursively();
/**
* Process all direct dependencies and recursively process transitive dependencies which marked with 'exported'
*
* @return this instance
*/
@NotNull
JpsJavaDependenciesEnumerator recursivelyExportedOnly();
@NotNull
JpsJavaDependenciesEnumerator withoutLibraries();
@NotNull
JpsJavaDependenciesEnumerator withoutDepModules();
@NotNull
JpsJavaDependenciesEnumerator withoutSdk();
@NotNull
JpsJavaDependenciesEnumerator withoutModuleSourceEntries();
@NotNull
@Override
JpsJavaDependenciesEnumerator satisfying(@NotNull Condition<JpsDependencyElement> condition);
/**
* Process only dependencies which should be included in the classpath specified by {@code classpathKind} parameter
* @param classpathKind
* @return this instance
*/
@NotNull
JpsJavaDependenciesEnumerator includedIn(@NotNull JpsJavaClasspathKind classpathKind);
/**
* @return enumerator for processing classes roots of the dependencies
*/
@NotNull
JpsJavaDependenciesRootsEnumerator classes();
/**
* @return enumerator for processing source roots of the dependencies
*/
@NotNull
JpsJavaDependenciesRootsEnumerator sources();
}
|