This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

View | Details | Raw Unified | Return to bug 207717
Collapse All | Expand All

(-)a/maven/src/org/netbeans/modules/maven/classpath/CPExtender.java (-16 / +2 lines)
Lines 95-109 Link Here
95
    private Project project;
95
    private Project project;
96
    private static final String POM_XML = "pom.xml"; //NOI18N
96
    private static final String POM_XML = "pom.xml"; //NOI18N
97
    
97
    
98
    /**
99
     * ClassPath for compiling only, but not running. In practice this means that scope
100
     * for the artefacts with this classpath will be set to <code>provided</code>
101
     * if added to a source group, and <code>test</code> if added to test source group.
102
     * This constant is in practice a friend API, even if it is hardcoded in the
103
     * consuming module (see e.g. bug 186221).
104
     */
105
    public static final String CLASSPATH_COMPILE_ONLY = "classpath/compile_only";
106
107
    public CPExtender(Project project) {
98
    public CPExtender(Project project) {
108
        this.project = project;
99
        this.project = project;
109
    }
100
    }
Lines 256-262 Link Here
256
        return new String[] {
247
        return new String[] {
257
            ClassPath.COMPILE,
248
            ClassPath.COMPILE,
258
            ClassPath.EXECUTE,
249
            ClassPath.EXECUTE,
259
            CLASSPATH_COMPILE_ONLY,
250
            JavaClassPathConstants.COMPILE_ONLY,
260
            JavaClassPathConstants.PROCESSOR_PATH
251
            JavaClassPathConstants.PROCESSOR_PATH
261
        };
252
        };
262
    }
253
    }
Lines 343-353 Link Here
343
                        dependency.setVersion(mp.getVersion());
334
                        dependency.setVersion(mp.getVersion());
344
                        if (scope != null) {
335
                        if (scope != null) {
345
                            dependency.setScope(scope);
336
                            dependency.setScope(scope);
346
                        } else {
347
                            if (NbMavenProject.TYPE_EJB.equals(nbprj.getPackagingType()) ||
348
                                NbMavenProject.TYPE_WAR.equals(nbprj.getPackagingType())) {
349
                                dependency.setScope(Artifact.SCOPE_PROVIDED);
350
                            }
351
                        }
337
                        }
352
                        added.set(true);
338
                        added.set(true);
353
                    } else {
339
                    } else {
Lines 394-400 Link Here
394
            scope = "test"; //NOI18N
380
            scope = "test"; //NOI18N
395
        }
381
        }
396
        if (scope == null &&
382
        if (scope == null &&
397
            (CLASSPATH_COMPILE_ONLY.equals(type) || JavaClassPathConstants.PROCESSOR_PATH.equals(type))) {
383
            (JavaClassPathConstants.COMPILE_ONLY.equals(type) || JavaClassPathConstants.PROCESSOR_PATH.equals(type))) {
398
            scope = Artifact.SCOPE_PROVIDED;
384
            scope = Artifact.SCOPE_PROVIDED;
399
        }
385
        }
400
        return scope;
386
        return scope;
(-)a/maven/src/org/netbeans/modules/maven/classpath/ClassPathProviderImpl.java (-13 lines)
Lines 161-169 Link Here
161
            return getBootClassPath();
161
            return getBootClassPath();
162
        } else if (type.equals(ClassPathSupport.ENDORSED)) {
162
        } else if (type.equals(ClassPathSupport.ENDORSED)) {
163
            return getEndorsedClassPath();
163
            return getEndorsedClassPath();
164
        } else if (type.equals("classpath/packaged")) { //NOI18N
165
            //a semi-private contract with visual web.
166
            return getProvidedClassPath();
167
        } else if (type.equals(JavaClassPathConstants.PROCESSOR_PATH)) {
164
        } else if (type.equals(JavaClassPathConstants.PROCESSOR_PATH)) {
168
            // XXX read <processorpath> from maven-compiler-plugin config
165
            // XXX read <processorpath> from maven-compiler-plugin config
169
            return getCompileTimeClasspath(fileType);
166
            return getCompileTimeClasspath(fileType);
Lines 172-187 Link Here
172
        }
169
        }
173
    }
170
    }
174
171
175
    private synchronized ClassPath getProvidedClassPath() {
176
        ClassPath cp = cache[7];
177
        if (cp == null) {
178
            cp = ClassPathFactory.createClassPath(new PackagedClassPathImpl(proj.getLookup().lookup(NbMavenProjectImpl.class)));
179
            cache[7] = cp;
180
        }
181
        return cp;
182
    }
183
    
184
    
185
    private boolean isChildOf(FileObject child, URI[] uris) {
172
    private boolean isChildOf(FileObject child, URI[] uris) {
186
        for (int i = 0; i < uris.length; i++) {
173
        for (int i = 0; i < uris.length; i++) {
187
            FileObject fo = FileUtilities.convertURItoFileObject(uris[i]);
174
            FileObject fo = FileUtilities.convertURItoFileObject(uris[i]);
(-)a/maven/src/org/netbeans/modules/maven/classpath/PackagedClassPathImpl.java (-101 lines)
Lines 1-101 Link Here
1
/*
2
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3
 *
4
 * Copyright 2010 Oracle and/or its affiliates. All rights reserved.
5
 *
6
 * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
7
 * Other names may be trademarks of their respective owners.
8
 *
9
 * The contents of this file are subject to the terms of either the GNU
10
 * General Public License Version 2 only ("GPL") or the Common
11
 * Development and Distribution License("CDDL") (collectively, the
12
 * "License"). You may not use this file except in compliance with the
13
 * License. You can obtain a copy of the License at
14
 * http://www.netbeans.org/cddl-gplv2.html
15
 * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
16
 * specific language governing permissions and limitations under the
17
 * License.  When distributing the software, include this License Header
18
 * Notice in each file and include the License file at
19
 * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
20
 * particular file as subject to the "Classpath" exception as provided
21
 * by Oracle in the GPL Version 2 section of the License file that
22
 * accompanied this code. If applicable, add the following below the
23
 * License Header, with the fields enclosed by brackets [] replaced by
24
 * your own identifying information:
25
 * "Portions Copyrighted [year] [name of copyright owner]"
26
 *
27
 * If you wish your version of this file to be governed by only the CDDL
28
 * or only the GPL Version 2, indicate your decision by adding
29
 * "[Contributor] elects to include this software in this distribution
30
 * under the [CDDL or GPL Version 2] license." If you do not indicate a
31
 * single choice of license, a recipient has the option to distribute
32
 * your version of this file under either the CDDL, the GPL Version 2 or
33
 * to extend the choice of license to its licensees as provided above.
34
 * However, if you add GPL Version 2 code and therefore, elected the GPL
35
 * Version 2 license, then the option applies only if the new code is
36
 * made subject to such option by the copyright holder.
37
 *
38
 * Contributor(s):
39
 *
40
 * Portions Copyrighted 2008 Sun Microsystems, Inc.
41
 */
42
43
package org.netbeans.modules.maven.classpath;
44
45
import java.io.File;
46
import java.net.URI;
47
import java.util.ArrayList;
48
import java.util.List;
49
import org.apache.maven.artifact.Artifact;
50
import org.apache.maven.model.Dependency;
51
import org.netbeans.modules.maven.NbMavenProjectImpl;
52
import org.openide.filesystems.FileUtil;
53
import org.openide.util.Utilities;
54
55
/**
56
 *
57
 * @author mkleint
58
 */
59
class PackagedClassPathImpl extends AbstractProjectClassPathImpl {
60
61
    public PackagedClassPathImpl(NbMavenProjectImpl project) {
62
        super(project);
63
    }
64
65
    @Override
66
    public URI[] createPath() {
67
        List<URI> lst = new ArrayList<URI>();
68
        List<Artifact> arts = getMavenProject().getOriginalMavenProject().getCompileArtifacts();
69
        List<Dependency> deps = getMavenProject().getOriginalMavenProject().getCompileDependencies();
70
        List<String> packagedIds = new ArrayList<String>();
71
        for (Dependency dep : deps) {
72
            if (!Artifact.SCOPE_PROVIDED.equals(dep.getScope()))  {
73
                packagedIds.add(dep.getManagementKey());
74
            }
75
        }
76
        
77
        List<File> assemblies = new ArrayList<File>();
78
        for (Artifact art : arts) {
79
            String key = art.getGroupId() + ":" + art.getArtifactId() + ":" + art.getType() + (art.getClassifier() != null ? (":" + art.getClassifier()) : ""); //NOI18N
80
            if (art.getFile() != null && packagedIds.contains(key)) {
81
                File fil = FileUtil.normalizeFile(art.getFile());
82
                // the assemblied jars go as last ones, otherwise source for binaries don't really work.
83
                // unless one has the assembled source jar s well?? is it possible?
84
                if (art.getClassifier() != null) {
85
                    assemblies.add(0, fil);
86
                } else {
87
                    lst.add(Utilities.toURI(fil));
88
                }
89
            } else {
90
              //NOPMD   //null means dependencies were not resolved..
91
            } 
92
        }
93
        for (File ass : assemblies) {
94
            lst.add(Utilities.toURI(ass));
95
        }
96
        URI[] uris = new URI[lst.size()];
97
        uris = lst.toArray(uris);
98
        return uris;
99
    }
100
101
}

Return to bug 207717