-
Notifications
You must be signed in to change notification settings - Fork 25.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[test] packaging: add java test project #29297
Changes from 1 commit
c5f1eb8
c16706d
249d57a
8dee0e6
fa0eade
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -17,8 +17,27 @@ | |
* under the License. | ||
*/ | ||
|
||
apply plugin: 'elasticsearch.vagrantsupport' | ||
apply plugin: 'elasticsearch.vagrant' | ||
plugins { | ||
id 'groovy' | ||
id 'application' | ||
id 'com.github.johnrengelman.shadow' version '2.0.2' | ||
id 'elasticsearch.build' | ||
id 'elasticsearch.vagrantsupport' | ||
id 'elasticsearch.vagrant' | ||
} | ||
|
||
dependencies { | ||
compile localGroovy() | ||
compile "org.hamcrest:hamcrest-all:${versions.hamcrest}" | ||
runtime project(':libs:elasticsearch-core') // needs to be on the classpath for JarHell | ||
packagingTest project(path: project.path, configuration: 'shadow') | ||
} | ||
|
||
shadowJar { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I wonder if it'd be simpler not to make an uber jar at all and instead execute a main class with classpath. I see that you iterate so you can run multiple jar files so you'd lose that. And you'd have to communicate the main class name to the plugin. I don't know if that is worth it just not to have to build the uber jar, but I think it is worth thinking about. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Good point. The iterating over multiple jars thing isn't really super important, I just figured "all the jars in this directory get executed" is a simple way to reason about it. It also gives a flexible way (the Similarly, using an uberjar isn't necessarily the goal but I did want however it works to be easy to run by hand inside the test VM like we can with bats (since iterating through gradle on the host is time consuming) I'll think about this more (also would like to hear thoughts from @rjernst on this) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I would stay away from shading if we can. What about having the executable jar contain a classpath entry, and having a simple "test" script be generated which invokes the jar? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'll give that a try. After thinking about it a little, dumping the test jars and all their dependencies into a directory and doing There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
dependencies { | ||
exclude(project(":libs:elasticsearch-core")) // isn't needed in tests | ||
} | ||
} | ||
|
||
List<String> plugins = [] | ||
for (Project subproj : project.rootProject.subprojects) { | ||
|
@@ -39,3 +58,16 @@ setupPackagingTest { | |
expectedPlugins.setText(plugins.join('\n'), 'UTF-8') | ||
} | ||
} | ||
|
||
mainClassName = 'org.elasticsearch.packaging.PackagingMain' | ||
|
||
tasks.test.enabled = false | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Why does this use elasticsearch.build if all these tasks are just disabled? Should this just be a plain groovy project, or is there something else that is needed? If something else, please leave a comment in this file explaining the reasoning. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We discussed this - I was able to get most of the precommit tasks passing, now only test and the license checks are disabled |
||
|
||
tasks.dependencyLicenses.enabled = false | ||
tasks.dependenciesInfo.enabled = false | ||
|
||
tasks.thirdPartyAudit.enabled = false | ||
|
||
tasks.forbiddenApis.enabled = false | ||
tasks.forbiddenApisMain.enabled = false | ||
tasks.forbiddenApisTest.enabled = false |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
/* | ||
* Licensed to Elasticsearch under one or more contributor | ||
* license agreements. See the NOTICE file distributed with | ||
* this work for additional information regarding copyright | ||
* ownership. Elasticsearch licenses this file to you 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.elasticsearch.packaging | ||
|
||
/** | ||
* This class doesn't do anything yet | ||
*/ | ||
class PackagingMain { | ||
static void main(String[] args) {} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
++. Because if it has the java plugin this isn't needed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah I figured it would be good to not couple it to the expectation that the project also has the java plugin applied