build: fix x-pack pom and allow installation

* The found-license project is removed since it is no longer needed
* The plugin-api classes have moved into the license-plugin since there is only one plugin
* The license/base project publishes the proper artifactId in the pom file
* The x-pack jar file is added as an artifact so that it can be installed
* The x-pack pom no longer declares the packaging as `zip`
* The x-pack pom uses the right artifactId for license-core
* Removed disabling of installing the x-plugins artifacts
* Cleaned up a use of guava in watcher (found when trying to remove guava as a compile
dependency but is needed by the HTML sanitizer)
* Removed the dependency on the mustache compiler since it is no longer necessary

Closes elastic/elasticsearch#1987

Original commit: elastic/x-pack-elasticsearch@9d3b50b054
This commit is contained in:
jaymode 2016-04-13 11:38:23 -04:00
parent 42bb1c5932
commit 0cce436641
18 changed files with 33 additions and 171 deletions

View File

@ -6,7 +6,6 @@ subprojects {
// we must not publish to sonatype until we have set up x-plugins to only publish the parts we want to publish! // we must not publish to sonatype until we have set up x-plugins to only publish the parts we want to publish!
project.afterEvaluate { project.afterEvaluate {
if (project.plugins.hasPlugin('com.bmuschko.nexus') && project.nexus.repositoryUrl.startsWith('file://') == false) { if (project.plugins.hasPlugin('com.bmuschko.nexus') && project.nexus.repositoryUrl.startsWith('file://') == false) {
install.enabled = false
uploadArchives.enabled = false uploadArchives.enabled = false
} }
} }

View File

@ -11,3 +11,8 @@ jar {
baseName = 'license-core' baseName = 'license-core'
} }
modifyPom {
project {
artifactId 'license-core'
}
}

View File

@ -1 +0,0 @@
/eclipse-build/

View File

@ -1,19 +0,0 @@
apply plugin: 'elasticsearch.esplugin'
esplugin {
name 'found-plugin'
description 'Internal Elasticsearch Licensing Plugin for Found'
classname 'org.elasticsearch.license.plugin.LicensePlugin'
}
dependencies {
compile project(':x-plugins:elasticsearch:license:plugin-api')
testCompile project(':x-plugins:elasticsearch:license:licensor')
}
// no tests
test.enabled = false
integTest.enabled = false
dependencyLicenses.enabled = false
compileJava.options.compilerArgs << "-Xlint:-rawtypes,-unchecked"

View File

@ -1,23 +0,0 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
package org.elasticsearch.license.plugin;
import org.elasticsearch.common.inject.AbstractModule;
import org.elasticsearch.license.core.LicenseVerifier;
import org.elasticsearch.license.plugin.core.FoundLicensesService;
import org.elasticsearch.license.plugin.core.LicenseeRegistry;
import org.elasticsearch.license.plugin.core.LicensesManagerService;
public class LicenseModule extends AbstractModule {
@Override
protected void configure() {
bind(LicenseVerifier.class).asEagerSingleton();
bind(LicenseeRegistry.class).to(FoundLicensesService.class);
bind(LicensesManagerService.class).to(FoundLicensesService.class);
}
}

View File

@ -1,49 +0,0 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
package org.elasticsearch.license.plugin;
import org.elasticsearch.common.component.LifecycleComponent;
import org.elasticsearch.common.inject.Inject;
import org.elasticsearch.common.inject.Module;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.license.plugin.core.FoundLicensesService;
import org.elasticsearch.plugins.Plugin;
import java.util.ArrayList;
import java.util.Collection;
public class LicensePlugin extends Plugin {
public static final String NAME = "license";
@Inject
public LicensePlugin(Settings settings) {
}
@Override
public String name() {
return NAME;
}
@Override
public String description() {
return "Internal Elasticsearch Licensing Plugin";
}
@Override
public Collection<Class<? extends LifecycleComponent>> nodeServices() {
Collection<Class<? extends LifecycleComponent>> services = new ArrayList<>();
services.add(FoundLicensesService.class);
return services;
}
@Override
public Collection<Module> nodeModules() {
Collection<Module> modules = new ArrayList<Module>();
modules.add(new LicenseModule());
return modules;
}
}

View File

@ -1,56 +0,0 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
package org.elasticsearch.license.plugin.core;
import org.elasticsearch.ElasticsearchException;
import org.elasticsearch.common.component.AbstractLifecycleComponent;
import org.elasticsearch.common.inject.Inject;
import org.elasticsearch.common.inject.Singleton;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.license.core.License;
import java.util.Collections;
import java.util.List;
@Singleton
public class FoundLicensesService extends AbstractLifecycleComponent<FoundLicensesService> implements LicenseeRegistry,
LicensesManagerService {
@Inject
public FoundLicensesService(Settings settings) {
super(settings);
}
/**
* {@inheritDoc}
*/
@Override
public void register(Licensee licensee) {
licensee.onChange(new Licensee.Status(License.OperationMode.PLATINUM, LicenseState.ENABLED));
}
@Override
protected void doStart() throws ElasticsearchException {
}
@Override
protected void doStop() throws ElasticsearchException {
}
@Override
protected void doClose() throws ElasticsearchException {
}
@Override
public List<String> licenseesWithState(LicenseState state) {
return Collections.<String>emptyList();
}
@Override
public License getLicense() {
return null;
}
}

View File

@ -1 +0,0 @@
/eclipse-build/

View File

@ -1,15 +0,0 @@
apply plugin: 'elasticsearch.build'
dependencies {
compile project(':x-plugins:elasticsearch:license:base')
compile "org.elasticsearch:elasticsearch:${version}"
testCompile project(':x-plugins:elasticsearch:license:licensor')
testCompile "org.elasticsearch.test:framework:${version}"
}
dependencyLicenses.enabled = false
jar {
baseName = 'license-plugin-api'
}

View File

@ -21,7 +21,7 @@ dependencyLicenses.enabled = false
dependencies { dependencies {
// license deps // license deps
compile project(':x-plugins:elasticsearch:license:plugin-api') compile project(':x-plugins:elasticsearch:license:base')
testCompile project(':x-plugins:elasticsearch:license:licensor') testCompile project(':x-plugins:elasticsearch:license:licensor')
// shield deps // shield deps
@ -31,11 +31,9 @@ dependencies {
// watcher deps // watcher deps
compile 'com.googlecode.owasp-java-html-sanitizer:owasp-java-html-sanitizer:r239' compile 'com.googlecode.owasp-java-html-sanitizer:owasp-java-html-sanitizer:r239'
compile 'com.google.guava:guava:16.0.1' // needed by watcher and shield tests for jimfs compile 'com.google.guava:guava:16.0.1' // needed by watcher for the html sanitizer and shield tests for jimfs
compile 'com.google.code.findbugs:jsr305:3.0.1' // TODO: remove this compile 'com.google.code.findbugs:jsr305:3.0.1' // TODO: remove this
compile 'com.sun.mail:javax.mail:1.5.3' compile 'com.sun.mail:javax.mail:1.5.3'
// fork of mustache: https://github.com/elastic/x-plugins/issues/1116
compile 'com.github.spullara.mustache.java:compiler:0.9.1' // TODO: remove this
testCompile 'org.subethamail:subethasmtp:3.1.7' testCompile 'org.subethamail:subethasmtp:3.1.7'
// common test deps // common test deps
@ -153,6 +151,8 @@ task testJar(type: Jar) {
from sourceSets.test.output from sourceSets.test.output
} }
artifacts { artifacts {
// normal es plugins do not publish the jar but we need to since users need it for Transport Clients and extensions
archives jar
testArtifacts testJar testArtifacts testJar
} }
@ -176,3 +176,25 @@ licenseHeaders.enabled = false
forbiddenApisMain { forbiddenApisMain {
signaturesURLs += [file('signatures.txt').toURI().toURL()] signaturesURLs += [file('signatures.txt').toURI().toURL()]
} }
modifyPom { MavenPom pom ->
pom.withXml { XmlProvider xml ->
// first find if we have dependencies at all, and grab the node
NodeList depsNodes = xml.asNode().get('dependencies')
if (depsNodes.isEmpty()) {
return
}
// find the 'base' dependency and replace it with the correct name because the project name is
// always used even when the pom of the other project is correct
for (Node depNode : depsNodes.get(0).children()) {
String groupId = depNode.get('groupId').get(0).text()
Node artifactIdNode = depNode.get('artifactId').get(0)
String artifactId = artifactIdNode.text()
if (groupId.equals('org.elasticsearch') && artifactId.equals('base')) {
artifactIdNode.replaceNode(new Node(null, 'artifactId', 'license-core'))
return
}
}
}
}

View File

@ -5,13 +5,13 @@
*/ */
package org.elasticsearch.watcher.actions.email.service.attachment; package org.elasticsearch.watcher.actions.email.service.attachment;
import com.google.common.collect.ImmutableMap;
import org.elasticsearch.ElasticsearchParseException; import org.elasticsearch.ElasticsearchParseException;
import org.elasticsearch.common.inject.Inject; import org.elasticsearch.common.inject.Inject;
import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.common.xcontent.XContentParser;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.Map; import java.util.Map;
@ -21,7 +21,7 @@ public class EmailAttachmentsParser {
@Inject @Inject
public EmailAttachmentsParser(Map<String, EmailAttachmentParser> parsers) { public EmailAttachmentsParser(Map<String, EmailAttachmentParser> parsers) {
this.parsers = ImmutableMap.copyOf(parsers); this.parsers = Collections.unmodifiableMap(parsers);
} }
public EmailAttachments parse(XContentParser parser) throws IOException { public EmailAttachments parse(XContentParser parser) throws IOException {