Search in sources :

Example 66 with Project

use of aQute.bnd.build.Project in project bnd by bndtools.

the class MavenTest method getProject.

/**
	 * @throws Exception
	 */
protected static Project getProject(String name) throws Exception {
    File wsf = IO.getFile(cwd, "testresources/ws");
    Workspace ws = Workspace.getWorkspace(wsf);
    assertNotNull(ws);
    Project project = ws.getProject(name);
    assertNotNull(project);
    return project;
}
Also used : Project(aQute.bnd.build.Project) File(java.io.File) Workspace(aQute.bnd.build.Workspace)

Example 67 with Project

use of aQute.bnd.build.Project in project bnd by bndtools.

the class ProjectLaunchImplTest method testCwdIsProjectBase.

public void testCwdIsProjectBase() throws Exception {
    Project project = ws.getProject("p1");
    project.prepare();
    ProjectLauncherImpl projectLauncherImpl = new ProjectLauncherImpl(project);
    assertEquals(project.getBase(), projectLauncherImpl.getCwd());
    projectLauncherImpl.close();
}
Also used : Project(aQute.bnd.build.Project)

Example 68 with Project

use of aQute.bnd.build.Project in project intellij-plugins by JetBrains.

the class BndProjectImportBuilder method commit.

@NotNull
@Override
public List<Module> commit(com.intellij.openapi.project.Project project, ModifiableModuleModel model, ModulesProvider modulesProvider, ModifiableArtifactModel artifactModel) {
    if (model == null) {
        model = ModuleManager.getInstance(project).getModifiableModel();
        try {
            List<Module> result = commit(project, model, modulesProvider, artifactModel);
            WriteAction.run(model::commit);
            return result;
        } catch (RuntimeException | Error e) {
            model.dispose();
            throw e;
        }
    }
    if (myWorkspace != null) {
        List<Project> toImport = ContainerUtil.filter(myProjects, project1 -> isMarked(project1));
        final BndProjectImporter importer = new BndProjectImporter(project, myWorkspace, toImport);
        Module rootModule = importer.createRootModule(model);
        importer.setupProject();
        StartupManager.getInstance(project).registerPostStartupActivity(() -> importer.resolve(false));
        return Collections.singletonList(rootModule);
    } else {
        File file = new File(getFileToImport());
        if (BndProjectImporter.BND_FILE.equals(file.getName())) {
            file = file.getParentFile();
        }
        BndProjectImporter.reimportProjects(project, Collections.singleton(file.getPath()));
        return Collections.emptyList();
    }
}
Also used : Project(aQute.bnd.build.Project) Module(com.intellij.openapi.module.Module) File(java.io.File) NotNull(org.jetbrains.annotations.NotNull)

Example 69 with Project

use of aQute.bnd.build.Project in project intellij-plugins by JetBrains.

the class BndProjectImporter method addEntry.

private void addEntry(ModifiableModuleModel moduleModel, LibraryTable.ModifiableModel libraryModel, ModifiableRootModel rootModel, Container dependency, DependencyScope scope) throws IllegalArgumentException {
    File file = dependency.getFile();
    String bsn = dependency.getBundleSymbolicName();
    String version = dependency.getVersion();
    String path = file.getPath();
    if (path.contains(": ")) {
        throw new IllegalArgumentException("Cannot resolve " + bsn + ":" + version + ": " + path);
    }
    if (JDK_DEPENDENCY.equals(bsn)) {
        String name = BND_LIB_PREFIX + bsn + ":" + version;
        if (FileUtil.isAncestor(myWorkspace.getBase(), file, true)) {
            name += "-" + myProject.getName();
        }
        ProjectJdkTable jdkTable = ProjectJdkTable.getInstance();
        Sdk jdk = jdkTable.findJdk(name);
        if (jdk == null) {
            jdk = jdkTable.createSdk(name, JavaSdk.getInstance());
            SdkModificator jdkModel = jdk.getSdkModificator();
            jdkModel.setHomePath(file.getParent());
            jdkModel.setVersionString(version);
            VirtualFile root = VirtualFileManager.getInstance().findFileByUrl(url(file));
            assert root != null : file + " " + file.exists();
            jdkModel.addRoot(root, OrderRootType.CLASSES);
            VirtualFile srcRoot = VirtualFileManager.getInstance().findFileByUrl(url(file) + SRC_ROOT);
            if (srcRoot != null)
                jdkModel.addRoot(srcRoot, OrderRootType.SOURCES);
            jdkModel.commitChanges();
            jdkTable.addJdk(jdk);
        }
        rootModel.setSdk(jdk);
        return;
    }
    ExportableOrderEntry entry;
    switch(dependency.getType()) {
        case PROJECT:
            {
                String name = dependency.getProject().getName();
                Module module = moduleModel.findModuleByName(name);
                if (module == null) {
                    throw new IllegalArgumentException("Unknown module '" + name + "'");
                }
                entry = (ModuleOrderEntry) ContainerUtil.find(rootModel.getOrderEntries(), e -> e instanceof ModuleOrderEntry && ((ModuleOrderEntry) e).getModule() == module);
                if (entry == null) {
                    entry = rootModel.addModuleOrderEntry(module);
                }
                break;
            }
        case REPO:
            {
                String name = BND_LIB_PREFIX + bsn + ":" + version;
                Library library = libraryModel.getLibraryByName(name);
                if (library == null) {
                    library = libraryModel.createLibrary(name);
                }
                Library.ModifiableModel model = library.getModifiableModel();
                for (String url : model.getUrls(OrderRootType.CLASSES)) model.removeRoot(url, OrderRootType.CLASSES);
                for (String url : model.getUrls(OrderRootType.SOURCES)) model.removeRoot(url, OrderRootType.SOURCES);
                model.addRoot(url(file), OrderRootType.CLASSES);
                String srcRoot = mySourcesMap.get(path);
                if (srcRoot != null) {
                    model.addRoot(url(file) + srcRoot, OrderRootType.SOURCES);
                }
                model.commit();
                entry = rootModel.addLibraryEntry(library);
                break;
            }
        case EXTERNAL:
            {
                Library library = rootModel.getModuleLibraryTable().createLibrary(file.getName());
                Library.ModifiableModel model = library.getModifiableModel();
                model.addRoot(url(file), OrderRootType.CLASSES);
                String srcRoot = mySourcesMap.get(path);
                if (srcRoot != null) {
                    model.addRoot(url(file) + srcRoot, OrderRootType.SOURCES);
                }
                model.commit();
                entry = rootModel.findLibraryOrderEntry(library);
                assert entry != null : library;
                break;
            }
        default:
            throw new IllegalArgumentException("Unknown dependency '" + dependency + "' of type " + dependency.getType());
    }
    entry.setScope(scope);
}
Also used : VirtualFile(com.intellij.openapi.vfs.VirtualFile) FileUtilRt(com.intellij.openapi.util.io.FileUtilRt) OsmorcFacetType(org.osmorc.facet.OsmorcFacetType) CompilerConfiguration(com.intellij.compiler.CompilerConfiguration) VirtualFile(com.intellij.openapi.vfs.VirtualFile) ProjectLibraryTable(com.intellij.openapi.roots.impl.libraries.ProjectLibraryTable) FacetUtil(com.intellij.facet.impl.FacetUtil) Refreshable(aQute.bnd.service.Refreshable) JavaSdk(com.intellij.openapi.projectRoots.JavaSdk) VirtualFileManager(com.intellij.openapi.vfs.VirtualFileManager) Library(com.intellij.openapi.roots.libraries.Library) Task(com.intellij.openapi.progress.Task) OsmorcFacet(org.osmorc.facet.OsmorcFacet) ZipFile(java.util.zip.ZipFile) FileUtil(com.intellij.openapi.util.io.FileUtil) Logger(com.intellij.openapi.diagnostic.Logger) Module(com.intellij.openapi.module.Module) ZipEntry(java.util.zip.ZipEntry) RepositoryPlugin(aQute.bnd.service.RepositoryPlugin) JpsJavaCompilerOptions(org.jetbrains.jps.model.java.compiler.JpsJavaCompilerOptions) LanguageLevel(com.intellij.pom.java.LanguageLevel) StdModuleTypes(com.intellij.openapi.module.StdModuleTypes) ModifiableModelCommitter(com.intellij.openapi.roots.impl.ModifiableModelCommitter) ModifiableModuleModel(com.intellij.openapi.module.ModifiableModuleModel) OutputPathType(org.jetbrains.osgi.jps.model.OutputPathType) NotificationType(com.intellij.notification.NotificationType) Nullable(org.jetbrains.annotations.Nullable) ProgressIndicator(com.intellij.openapi.progress.ProgressIndicator) ProjectJdkTable(com.intellij.openapi.projectRoots.ProjectJdkTable) ApplicationManager(com.intellij.openapi.application.ApplicationManager) NotNull(org.jetbrains.annotations.NotNull) NotificationDisplayType(com.intellij.notification.NotificationDisplayType) java.util(java.util) OsmorcFacetConfiguration(org.osmorc.facet.OsmorcFacetConfiguration) ModuleManager(com.intellij.openapi.module.ModuleManager) ContainerUtil(com.intellij.util.containers.ContainerUtil) Container(aQute.bnd.build.Container) com.intellij.openapi.roots(com.intellij.openapi.roots) Workspace(aQute.bnd.build.Workspace) NotificationGroup(com.intellij.notification.NotificationGroup) ManifestGenerationMode(org.jetbrains.osgi.jps.model.ManifestGenerationMode) OsmorcBundle.message(org.osmorc.i18n.OsmorcBundle.message) Project(aQute.bnd.build.Project) StringUtil(com.intellij.openapi.util.text.StringUtil) JavacConfiguration(com.intellij.compiler.impl.javaCompiler.javac.JavacConfiguration) Key(com.intellij.openapi.util.Key) IOException(java.io.IOException) Sdk(com.intellij.openapi.projectRoots.Sdk) File(java.io.File) Attrs(aQute.bnd.header.Attrs) SdkModificator(com.intellij.openapi.projectRoots.SdkModificator) LibraryTable(com.intellij.openapi.roots.libraries.LibraryTable) VfsUtil(com.intellij.openapi.vfs.VfsUtil) ObjectUtils(com.intellij.util.ObjectUtils) PathUtil(com.intellij.util.PathUtil) ModuleFileType(com.intellij.ide.highlighter.ModuleFileType) Condition(com.intellij.openapi.util.Condition) SdkModificator(com.intellij.openapi.projectRoots.SdkModificator) ProjectJdkTable(com.intellij.openapi.projectRoots.ProjectJdkTable) JavaSdk(com.intellij.openapi.projectRoots.JavaSdk) Sdk(com.intellij.openapi.projectRoots.Sdk) Library(com.intellij.openapi.roots.libraries.Library) Module(com.intellij.openapi.module.Module) VirtualFile(com.intellij.openapi.vfs.VirtualFile) ZipFile(java.util.zip.ZipFile) File(java.io.File)

Example 70 with Project

use of aQute.bnd.build.Project in project intellij-plugins by JetBrains.

the class BndProjectImporter method resolve.

private boolean resolve(@Nullable ProgressIndicator indicator) {
    int progress = 0;
    for (Project project : myProjects) {
        LOG.info("resolving: " + project.getBase());
        if (indicator != null) {
            indicator.checkCanceled();
            indicator.setText(project.getName());
        }
        try {
            project.prepare();
        } catch (Exception e) {
            checkErrors(project, e);
            return false;
        }
        checkWarnings(project, project.getErrors(), true);
        checkWarnings(project, project.getWarnings(), false);
        findSources(project);
        if (indicator != null) {
            indicator.setFraction((double) (++progress) / myProjects.size());
        }
    }
    return true;
}
Also used : Project(aQute.bnd.build.Project) IOException(java.io.IOException)

Aggregations

Project (aQute.bnd.build.Project)140 Workspace (aQute.bnd.build.Workspace)70 File (java.io.File)45 ArrayList (java.util.ArrayList)22 IProject (org.eclipse.core.resources.IProject)21 Container (aQute.bnd.build.Container)19 IOException (java.io.IOException)17 ProjectLauncher (aQute.bnd.build.ProjectLauncher)15 Version (aQute.bnd.version.Version)12 Description (aQute.lib.getopt.Description)12 Jar (aQute.bnd.osgi.Jar)11 Builder (aQute.bnd.osgi.Builder)10 RepositoryPlugin (aQute.bnd.service.RepositoryPlugin)10 IJavaProject (org.eclipse.jdt.core.IJavaProject)9 Run (aQute.bnd.build.Run)8 BuildException (org.apache.tools.ant.BuildException)8 CoreException (org.eclipse.core.runtime.CoreException)8 IFile (org.eclipse.core.resources.IFile)7 ProjectBuilder (aQute.bnd.build.ProjectBuilder)6 ProjectTester (aQute.bnd.build.ProjectTester)5