Search in sources :

Example 1 with MavenStandaloneBuilderModule

use of org.eclipse.xtext.maven.MavenStandaloneBuilderModule in project xtext-maven by eclipse.

the class AbstractInstallDebugInfoMojo method execute.

@Override
public void execute() throws MojoExecutionException {
    synchronized (lock) {
        new MavenLog4JConfigurator().configureLog4j(getLog());
        Injector injector = Guice.createInjector(new MavenStandaloneBuilderModule());
        injector.injectMembers(this);
        for (Language language : getLanguages()) {
            Set<OutputConfiguration> outputConfigurations = language.getOutputConfigurations();
            if (outputConfigurations == null) {
                getLog().warn("No output configurations available for language " + language.getSetup() + ", assuming default layout and using SMAP trace.");
                outputConfigurations = new OutputConfigurationProvider().getOutputConfigurations();
            }
            try {
                Class<?> setup = getClass().getClassLoader().loadClass(language.getSetup());
                ISetup languageSetup = (ISetup) setup.getDeclaredConstructor().newInstance();
                Injector languageInjector = languageSetup.createInjectorAndDoEMFRegistration();
                FileExtensionProvider fileExtensionProvider = languageInjector.getInstance(FileExtensionProvider.class);
                TraceFileNameProvider traceFileNameProvider = languageInjector.getInstance(TraceFileNameProvider.class);
                for (OutputConfiguration config : outputConfigurations) {
                    ITraceToBytecodeInstaller traceInstaller = getTraceInstaller(config);
                    List<Trace> traces = createTraceInformation(getOutputDirectories(config), traceFileNameProvider);
                    installTraces(fileExtensionProvider.getFileExtensions(), traceInstaller, traces, traceFileNameProvider);
                }
            } catch (Exception e) {
                throw new MojoExecutionException("Failed to install traces for " + language.getSetup(), e);
            }
        }
    }
}
Also used : MojoExecutionException(org.apache.maven.plugin.MojoExecutionException) MavenLog4JConfigurator(org.eclipse.xtext.maven.MavenLog4JConfigurator) ISetup(org.eclipse.xtext.ISetup) OutputConfigurationProvider(org.eclipse.xtext.generator.OutputConfigurationProvider) FileExtensionProvider(org.eclipse.xtext.resource.FileExtensionProvider) MavenStandaloneBuilderModule(org.eclipse.xtext.maven.MavenStandaloneBuilderModule) IOException(java.io.IOException) MojoExecutionException(org.apache.maven.plugin.MojoExecutionException) ITraceToBytecodeInstaller(org.eclipse.xtext.generator.trace.ITraceToBytecodeInstaller) TraceFileNameProvider(org.eclipse.xtext.generator.trace.TraceFileNameProvider) Language(org.eclipse.xtext.maven.Language) Injector(com.google.inject.Injector) OutputConfiguration(org.eclipse.xtext.generator.OutputConfiguration)

Example 2 with MavenStandaloneBuilderModule

use of org.eclipse.xtext.maven.MavenStandaloneBuilderModule in project edelta by LorenzoBettini.

the class EdeltaMojo method internalExecute.

protected void internalExecute() throws MojoExecutionException {
    var languages = new LanguageAccessFactory().createLanguageAccess(getLanguages(), this.getClass().getClassLoader());
    var injector = Guice.createInjector(new MavenStandaloneBuilderModule());
    var builder = injector.getInstance(StandaloneBuilder.class);
    builder.setBaseDir(project.getBasedir().getAbsolutePath());
    builder.setLanguages(languages);
    builder.setEncoding(encoding);
    builder.setClassPathEntries(getClasspathElements());
    builder.setClassPathLookUpFilter(classPathLookupFilter);
    builder.setSourceDirs(sourceRoots);
    builder.setJavaSourceDirs(javaSourceRoots);
    builder.setFailOnValidationError(failOnValidationError);
    builder.setTempDir(createTempDir(tmpClassDirectory).getAbsolutePath());
    builder.setDebugLog(getLog().isDebugEnabled());
    configureCompiler(builder.getCompiler());
    logState();
    var errorDetected = !builder.launch();
    if (errorDetected && Boolean.TRUE.equals(failOnValidationError)) {
        throw new MojoExecutionException("Execution failed due to a severe validation error.");
    }
}
Also used : LanguageAccessFactory(org.eclipse.xtext.builder.standalone.LanguageAccessFactory) MojoExecutionException(org.apache.maven.plugin.MojoExecutionException) MavenStandaloneBuilderModule(org.eclipse.xtext.maven.MavenStandaloneBuilderModule)

Aggregations

MojoExecutionException (org.apache.maven.plugin.MojoExecutionException)2 MavenStandaloneBuilderModule (org.eclipse.xtext.maven.MavenStandaloneBuilderModule)2 Injector (com.google.inject.Injector)1 IOException (java.io.IOException)1 ISetup (org.eclipse.xtext.ISetup)1 LanguageAccessFactory (org.eclipse.xtext.builder.standalone.LanguageAccessFactory)1 OutputConfiguration (org.eclipse.xtext.generator.OutputConfiguration)1 OutputConfigurationProvider (org.eclipse.xtext.generator.OutputConfigurationProvider)1 ITraceToBytecodeInstaller (org.eclipse.xtext.generator.trace.ITraceToBytecodeInstaller)1 TraceFileNameProvider (org.eclipse.xtext.generator.trace.TraceFileNameProvider)1 Language (org.eclipse.xtext.maven.Language)1 MavenLog4JConfigurator (org.eclipse.xtext.maven.MavenLog4JConfigurator)1 FileExtensionProvider (org.eclipse.xtext.resource.FileExtensionProvider)1