/******************************************************************************* * Copyright (c) 2008 Sonatype, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html *******************************************************************************/ package org.opennms.m2e.castor.internal; import java.io.File; import java.util.Set; import org.apache.maven.plugin.MojoExecution; import org.codehaus.plexus.util.Scanner; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.m2e.core.MavenPlugin; import org.eclipse.m2e.core.embedder.IMaven; import org.eclipse.m2e.core.project.configurator.MojoExecutionBuildParticipant; import org.sonatype.plexus.build.incremental.BuildContext; public class CastorBuildParticipant extends MojoExecutionBuildParticipant { public CastorBuildParticipant( MojoExecution execution ) { super( execution, true ); } @Override public Set<IProject> build( int kind, IProgressMonitor monitor ) throws Exception { IMaven maven = MavenPlugin.getMaven(); BuildContext buildContext = getBuildContext(); // check if any of the grammar files changed File source = maven.getMojoParameterValue(getSession(), getMojoExecution(), "schemaDirectory", File.class); Scanner ds = buildContext.newScanner( source ); // delta or full scanner ds.scan(); String[] includedFiles = ds.getIncludedFiles(); if (includedFiles == null || includedFiles.length <= 0 ) { return null; } // execute mojo Set<IProject> result = super.build( kind, monitor ); // tell m2e builder to refresh generated files File generated = maven.getMojoParameterValue(getSession(), getMojoExecution(), "dest", File.class); if (generated != null) { buildContext.refresh( generated ); } return result; } }