我有一个多项目构建,我在一个子项目中设置了一个任务来构建一个胖罐.我创建的任务类似于食谱中描述的任务.
jar {
from configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
manifest { attributes 'Main-Class': 'com.benmccann.gradle.test.WebServer' }
}
Run Code Online (Sandbox Code Playgroud)
运行它会导致以下错误:
原因:您无法更改未处于未解决状态的配置!
我不确定这个错误意味着什么.我还在Gradle JIRA上报告了这个问题,以防它出现问题.
我正在使用SBT(在IntelliJ IDEA中)构建一个简单的Scala项目.
我想知道构建Uber JAR文件(又名Fat JAR,Super JAR)的最简单方法是什么.
我目前正在使用SBT但是当我将我的JAR文件提交给Apache Spark时,我收到以下错误:
线程"main"中的异常java.lang.SecurityException:Manifest主要属性的签名文件摘要无效
或者在编译期间出现此错误:
java.lang.RuntimeException:deduplicate:在以下位置找到不同的文件内容:
PATH\DEPENDENCY.jar:META-INF/DEPENDENCIES
PATH\DEPENDENCY.jar:META-INF/MANIFEST.MF
它看起来是因为我的一些依赖项包括需要在最终的Uber JAR文件中删除的签名文件(META-INF).
我尝试使用这样的sbt-assembly插件:
/project/assembly.sbt
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.12.0")
Run Code Online (Sandbox Code Playgroud)
/project/plugins.sbt
logLevel := Level.Warn
Run Code Online (Sandbox Code Playgroud)
/build.sbt
lazy val commonSettings = Seq(
name := "Spark-Test"
version := "1.0"
scalaVersion := "2.11.4"
)
lazy val app = (project in file("app")).
settings(commonSettings: _*).
settings(
libraryDependencies ++= Seq(
"org.apache.spark" %% "spark-core" % "1.2.0",
"org.apache.spark" %% "spark-streaming" % "1.2.0",
"org.apache.spark" % "spark-streaming-twitter_2.10" % "1.2.0" …Run Code Online (Sandbox Code Playgroud) 是否有一个工具或脚本可以轻松地将一堆JAR文件合并到一个JAR文件中?奖励是轻松设置主文件清单并使其可执行.
具体案例是Java重组文本工具.我想用以下的方式运行它:
java -jar rst.jar
据我所知,它没有依赖关系,表明它不应该是一个简单的单文件工具,但下载的ZIP文件包含很多库.
0 11-30-07 10:01 jrst-0.8.1/
922 11-30-07 09:53 jrst-0.8.1/jrst.bat
898 11-30-07 09:53 jrst-0.8.1/jrst.sh
2675 11-30-07 09:42 jrst-0.8.1/readmeEN.txt
108821 11-30-07 09:59 jrst-0.8.1/jrst-0.8.1.jar
2675 11-30-07 09:42 jrst-0.8.1/readme.txt
0 11-30-07 10:01 jrst-0.8.1/lib/
81508 11-30-07 09:49 jrst-0.8.1/lib/batik-util-1.6-1.jar
2450757 11-30-07 09:49 jrst-0.8.1/lib/icu4j-2.6.1.jar
559366 11-30-07 09:49 jrst-0.8.1/lib/commons-collections-3.1.jar
83613 11-30-07 09:49 jrst-0.8.1/lib/commons-io-1.3.1.jar
207723 11-30-07 09:49 jrst-0.8.1/lib/commons-lang-2.1.jar
52915 11-30-07 09:49 jrst-0.8.1/lib/commons-logging-1.1.jar
260172 11-30-07 09:49 jrst-0.8.1/lib/commons-primitives-1.0.jar
313898 11-30-07 09:49 jrst-0.8.1/lib/dom4j-1.6.1.jar
1994150 11-30-07 09:49 jrst-0.8.1/lib/fop-0.93-jdk15.jar
55147 11-30-07 09:49 jrst-0.8.1/lib/activation-1.0.2.jar
355030 11-30-07 …Run Code Online (Sandbox Code Playgroud) 在gradle中 - 我如何在lib目录(特别是lib/enttoolkit.jar和lib/mail.jar)中的jar输出jar中嵌入jar?
我是一个沉重的Maven用户,现在我逐渐将SBT用于我的一些项目.
我想知道如何使用SBT创建一个独立的Java项目?此项目应打包为JAR文件,此JAR文件将用作另一个SBT项目中的依赖项.
在Maven中,我可以告诉我pom.xml在构建它时应该生成什么类型的工件.在SBT中我能做些类似的事吗?
我是Gradle新手.我想构建一个uberjar(AKA fatjar),它包含项目的所有传递依赖项.我需要在"build.gradle"中添加哪些行?
这就是我现在所拥有的:(我几天前从某处复制过,但不记得从哪里开始.)
task uberjar(type: Jar) {
from files(sourceSets.main.output.classesDir)
manifest {
attributes 'Implementation-Title': 'Foobar',
'Implementation-Version': version,
'Built-By': System.getProperty('user.name'),
'Built-Date': new Date(),
'Built-JDK': System.getProperty('java.version'),
'Main-Class': mainClassName
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个包含项目类的可执行jar(使用maven),它是一个清单文件的依赖项,该文件包含主类的条目和指向jar根目录中包含的依赖项的类路径条目;像这样:
清单文件:
..... Main-Class : com.acme.MainClass Class-Path : dependecy1.jar dependecy2.jar .....
罐:
jar-root |-- .... |-- com/acme/../*.class |-- dependecy1.jar `-- dependecy2.jar
我正在使用maven-jar-plugin来创建清单文件和maven-shade-plugin来创建"uber"jar,但依赖项被解压缩并作为类添加到我的jar中.
所以这是我的问题...
我正在使用 maven-shade 插件将 Spring Boot 应用程序打包到 uber jar 中。很简单吧?好吧,除了最近我在结尾处收到以下警告mvn clean package:
[WARNING] Discovered module-info.class. Shading will break its strong encapsulation.
这实际上并没有破坏任何东西,但我是一个完美主义者,这让我发疯了吗?我该如何摆脱它?我尝试了很多东西,但没有成功。
请帮忙 :(