/*
* Copyright (C) 2014 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jboss.errai.forge.facet.plugin;
import org.jboss.errai.forge.constant.ArtifactVault.DependencyArtifact;
import org.jboss.errai.forge.constant.PomPropertyVault.Property;
import org.jboss.errai.forge.facet.base.CoreBuildFacet;
import org.jboss.errai.forge.facet.resource.GwtHostPageFacet;
import org.jboss.forge.addon.dependencies.builder.DependencyBuilder;
import org.jboss.forge.addon.facets.constraints.FacetConstraint;
import org.jboss.forge.addon.maven.plugins.ConfigurationElement;
import org.jboss.forge.addon.maven.plugins.ConfigurationElementBuilder;
import org.jboss.forge.addon.maven.plugins.Execution;
import org.jboss.forge.addon.maven.plugins.ExecutionBuilder;
import java.util.ArrayList;
import java.util.Arrays;
/**
* This facet configures the gwt-maven-plugin in the build section of the pom
* file.
*
* @author Max Barkley <mbarkley@redhat.com>
*/
@FacetConstraint({ CoreBuildFacet.class, GwtHostPageFacet.class })
public class GwtPluginFacet extends AbstractPluginFacet {
public GwtPluginFacet() {
pluginArtifact = DependencyArtifact.GwtPlugin;
dependencies = new ArrayList<DependencyBuilder>(0);
executions = Arrays.asList(new Execution[] {
// Note: phase and id must be explicitly set, otherwise forge will write
// "null" as values to the tags
//ExecutionBuilder.create().setId("resources").setPhase("process-resources").addGoal("resources"),
ExecutionBuilder.create().setId("compile").setPhase("prepare-package").addGoal("compile")
});
configurations = Arrays
.asList(new ConfigurationElement[] {
ConfigurationElementBuilder.create().setName("logLevel").setText("INFO"),
ConfigurationElementBuilder.create().setName("noServer").setText("false"),
ConfigurationElementBuilder.create().setName("server")
.setText("org.jboss.errai.cdi.server.gwt.JBossLauncher"),
ConfigurationElementBuilder.create().setName("disableCastChecking").setText("true"),
ConfigurationElementBuilder.create().setName("runTarget").setText("${errai.dev.context}/index.html"),
ConfigurationElementBuilder.create().setName("soyc").setText("false"),
ConfigurationElementBuilder.create().setName("hostedWebapp"),
ConfigurationElementBuilder
.create()
.setName("extraJvmArgs")
.setText(
"-Xmx712m "
+ "-XX:CompileThreshold=7000 "
+ "-XX:MaxPermSize=128M "
+ "-D"
+ Property.JbossHome.getName()
+ "="
+ Property.JbossHome.invoke()
+ " "
+ "-D"
+ Property.DevContext.getName()
+ "="
+ Property.DevContext.invoke()
+ " "
+ "-Derrai.jboss.javaagent.path=${settings.localRepository}/org/jboss/errai/errai-client-local-class-hider/"
+ Property.ErraiVersion.invoke() + "/errai-client-local-class-hider-"
+ Property.ErraiVersion.invoke() + ".jar"
)
});
}
@Override
protected void init() {
for (final ConfigurationElement elem : configurations) {
if (elem.getName().equals("hostedWebapp")) {
ConfigurationElementBuilder.class.cast(elem).setText(WarPluginFacet.getWarSourceDirectory(getProject()));
break;
}
}
}
}