Java tutorial
/******************************************************************************* * 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; } }