com.liferay.ide.maven.core.FacetedMavenBundleProject.java Source code

Java tutorial

Introduction

Here is the source code for com.liferay.ide.maven.core.FacetedMavenBundleProject.java

Source

/*******************************************************************************
 * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
 *
 * This library is free software; you can redistribute it and/or modify it under
 * the terms of the GNU Lesser General Public License as published by the Free
 * Software Foundation; either version 2.1 of the License, or (at your option)
 * any later version.
 *
 * This library is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
 * details.
 *
 *******************************************************************************/
package com.liferay.ide.maven.core;

import com.liferay.ide.core.IBundleProject;

import java.util.ArrayList;
import java.util.List;

import org.apache.maven.project.MavenProject;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.m2e.core.project.IMavenProjectFacade;

/**
 * @author Gregory Amerson
 */
public class FacetedMavenBundleProject extends FacetedMavenProject implements IBundleProject {

    private final MavenBundlePluginProject bundleProject;

    public FacetedMavenBundleProject(IProject project) {
        super(project);

        this.bundleProject = new MavenBundlePluginProject(project);
    }

    @Override
    public boolean filterResource(IPath resourcePath) {
        return this.bundleProject.filterResource(resourcePath);
    }

    @Override
    public String getBundleShape() {
        return "war";
    }

    @Override
    public IPath getOutputBundle(boolean cleanBuild, IProgressMonitor monitor) throws CoreException {
        IPath outputJar = null;

        final MavenProjectBuilder mavenProjectBuilder = new MavenProjectBuilder(this.getProject());

        final List<String> goals = new ArrayList<>();

        if (cleanBuild) {
            goals.add("clean");
        }

        goals.add("package");

        for (String goal : goals) {
            mavenProjectBuilder.runMavenGoal(this.getProject(), goal, monitor);
        }

        // we are going to try to get the output jar even if the package failed.
        final IMavenProjectFacade projectFacade = MavenUtil.getProjectFacade(getProject(), monitor);
        final MavenProject mavenProject = projectFacade.getMavenProject(monitor);

        final String targetName = mavenProject.getBuild().getFinalName() + ".war";

        final IFolder targetFolder = getProject().getFolder("target");

        if (targetFolder.exists()) {
            //targetFolder.refreshLocal( IResource.DEPTH_ONE, monitor );
            final IPath targetFile = targetFolder.getRawLocation().append(targetName);

            if (targetFile.toFile().exists()) {
                outputJar = targetFile;
            }
        }

        if (outputJar == null || !outputJar.toFile().exists()) {
            throw new CoreException(LiferayMavenCore
                    .createErrorStatus("Unable to get output bundle for project " + getProject().getName()));
        }

        return outputJar;
    }

    @Override
    public String getSymbolicName() throws CoreException {
        return this.bundleProject.getSymbolicName();
    }

    @Override
    public boolean isFragmentBundle() {
        return false;
    }

}