maven-publish默认情况下,该插件为所有工件生成 MD5 和 SHA1 校验和文件。但是有什么方法可以让插件生成安全的校验和文件(首选 SHA512)?
这很容易重现。我刚刚初始化了一个新java-library项目并添加了maven-publish插件及其配置
构建.gradle:
apply plugin: 'java'
apply plugin: 'maven-publish'
repositories {
jcenter()
}
dependencies {
}
publishing {
repositories {
maven {
url rootProject.buildDir.path + '/repo'
}
}
publications {
mavenJava(MavenPublication) {
groupId = 'org.gradle.sample'
artifactId = 'project1-sample'
version = '1.1'
from components.java
}
}
}
Run Code Online (Sandbox Code Playgroud)
我已经查阅了 gradle 文档和 javadoc,但根本找不到关于校验和文件的任何提示。我知道我可以使用这样的 ANT 校验和任务很容易地为工件生成校验和
doLast {
ant.checksum(file: archivePath, algorithm: "SHA-512")
}
Run Code Online (Sandbox Code Playgroud)
但是我会以某种方式需要将它们“手动”放在正确的文件夹中,而不是实际的工件,这是我想避免的。
编辑:
如果无法指定校验和算法,是否可以以某种方式挂钩publish任务并将自定义校验和文件添加到工件目标文件夹中?我不想将校验和文件本身添加为工件,因为校验和会有 MD5 和 SHA1 校验和,这是没有意义的。
将Docker升级到Docker版本17.06.2-ce后,我的Docker容器无法重新启动。错误消息和我的撰写文件如下:
Starting wordpress ... error
Starting mysql ... error
ERROR: for wordpress Cannot start service wordpress: oci runtime error: container with id exists:
b3951fd8b599c273f39d3b29085d525828a92dabe518f42860ba6535d5edad6e
ERROR: for mysql Cannot start service mysql: oci runtime error: container with id exists: be9c3682bb66720c8015cfe9e9025c68a917204444e9b77f68b63d84f0469b71
======================
Run Code Online (Sandbox Code Playgroud)
泊坞窗的撰写文件为:
services:
wordpress:
image: wordpress
restart: always
ports:
- 80:80
environment:
WORDPRESS_DB_PASSWORD: xxx
mysql:
image: mysql:5.7
restart: always
environment:
MYSQL_ROOT_PASSWORD: xxx
Run Code Online (Sandbox Code Playgroud)
我已重新启动实例,但无法正常工作。需要你的帮助!
我正在尝试使用带有基于注释的客户端端点的tyrus独立客户端(tyrus-standalone-client-1.9)访问websocket服务器端点.我主要是关注这个例子.
也就是说,我的客户端端点目前看起来像
@ClientEndpoint
public class MyClientEndpoint {
private static CountDownLatch latch;
private Logger logger = Logger.getLogger(this.getClass().getName());
@OnOpen
public void onOpen(Session session) throws Exception {
session.getBasicRemote().sendText("initialRequest")
}
@OnMessage
public void onMessage(String message, Session session) throws Exception {
// do something
}
@OnClose
public void onClose(Session session, CloseReason closeReason) {
logger.info(String.format("Session %s close because of %s", session.getId(), closeReason));
latch.countDown();
}
public static void main(String[] args) {
latch = new CountDownLatch(1);
ClientManager client = ClientManager.createClient();
try {
URI serverEndpointUri = new …Run Code Online (Sandbox Code Playgroud) 为了执行与一些JavaScript单元测试因缘泊坞窗容器内(基于Ubuntu 14.04),我使用的是火狐开始在容器卡玛-脚本启动用xvfb-run.启动脚本如下所示:
#!/bin/bash
set -o errexit
# nasty workaround as xvfb-run doesn't cleanup properly...
trap "pkill -f /usr/lib/firefox/firefox" EXIT
xvfb-run --auto-servernum --server-args='-screen 0, 1024x768x16' firefox $1
Run Code Online (Sandbox Code Playgroud)
启动浏览器并执行单元测试非常有效.在执行测试后,karma终止了生成的浏览器实例 - 在我的例子中是通过xvfb-run启动firefox的脚本.
在上面的脚本中,你可以看到我trap在我的脚本退出时注册了一个杀死启动的firefox.这是有效的,但脚本不是一个非常好的公民,因为它终止当前正在运行的所有 firefox实例,而不是仅仅终止脚本启动的一个实例.我首先试图杀死xfvb-run进程,但是杀死这个进程对xvfb-run脚本启动的子进程没有影响......
如果我xvfb-run手动启动firefox,则会产生一堆生成的进程:
root@1d7a5988e521:/data# xvfb-run --auto-servernum --server-args='-screen 0, 1024x768x16' firefox &
[1] 348
root@1d7a5988e521:/data# ps ax
PID TTY STAT TIME COMMAND
1 ? Ss 0:00 bash
348 ? S 0:00 /bin/sh /usr/bin/xvfb-run --auto-servernum --server-args=-screen 0, 1024x768x16 …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种方法将特定配置的项目依赖项提取到工作区文件夹中。由于可能存在多个依赖项,我想将每个工件提取到具有工件名称的文件夹中。我试图在 python 的上下文中解决这个问题,但这个问题并不是真正与 python 相关......
目前我的 gradle 文件如下所示:
configurations { python }
dependencies {
python group: 'github.dpeger', name: 'py-utils', version: '1.6', ext: 'zip'
python group: 'github.dpeger', name: 'py-test', version: '1.6', ext: 'zip'
}
task cleanPythonDependencies(type: Delete) { delete 'lib/python' }
tasks.clean.dependsOn cleanPythonDependencies
task importPythonDependencies(type: Copy) {
dependsOn cleanPythonDependencies
from {
configurations.python.collect { zipTree(it) }
}
into 'lib/python'
}
Run Code Online (Sandbox Code Playgroud)
然而,这会将python配置中的所有依赖项提取到文件夹中lib\pyhton,而不使用工件的名称。
我想要的是py-utils被提取到lib\pyhton\py-utils和。py-testlib\pyhton\py-test
添加copyBootstrap到build.gradle我之后,我 在尝试运行构建任务时遇到下一个错误:
FAILURE:构建因异常而失败.
- 什么地方出了错:
配置根项目时出现问题'.在依赖解析中包含配置后,无法更改配置':providedCompile'的依赖关系.
怎么可以解决这个问题?我在互联网上搜索但没有找到解决方案.我copyBootstrap从这个链接得到了任务.他们的目标是从org.webjars组罐中提取所有内容到特定路径.
我正在使用Gradle 3.2和Intellij IDEA 2016.2.5
//group 'org'
//version '1.0-SNAPSHOT'
task wrapper(type: Wrapper) {
gradleVersion = '3.2'
distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip"
}
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'org.akhikhl.gretty:gretty:1.4.0'
}
}
repositories {
mavenCentral()
jcenter()
}
//apply plugin: 'java'
//apply plugin: 'eclipse-wtp'
//apply from: 'https://raw.github.com/akhikhl/gretty/master/pluginScripts/gretty.plugin'
apply plugin: 'war'
apply plugin: 'org.akhikhl.gretty'
sourceCompatibility = 1.8
targetCompatibility = 1.8
dependencies {
//compile …Run Code Online (Sandbox Code Playgroud) 我们使用 liquibase 来管理应用程序底层关系数据库结构的变化。我们使用 PostgreSQL 作为数据库后端。
现在有包含数百万条目的表,我们需要为其中一些大型表添加索引。由于表的大小,索引创建需要相当长的时间。这会阻止应用程序启动,因为 liquibase 变更集是在应用程序的启动阶段执行的,以确保在应用程序实际运行之前有适当的持久性后端可用。
虽然由于显而易见的原因需要在应用程序启动之前进行结构更改,但可以在应用程序已经运行时添加索引。因此我的问题是:
有没有办法与 liquibase 异步执行索引创建?
我们已经尝试使用CONCURRENTPostgreSQL 提供的选项。这有助于在应用程序运行时创建索引,因为索引创建不会锁定相应的表。但相应的 liquibase 变更集仍将等待索引创建完成,然后才能执行下一个变更集。
我使用了具有多个异常的catch块,这在未经模糊处理的构建中工作正常,但在模糊构建中没有捕获异常.
我正在使用proguard-maven-plugin
try {
...
} catch (ServletException | IOException e){
...
}
Run Code Online (Sandbox Code Playgroud)
我需要为此添加任何proguard规则吗?
因为它的工作正常当我编写我的代码时
try {
...
} catch (ServletException e) {
...
} catch (IOException e) {
...
}
Run Code Online (Sandbox Code Playgroud) 这是我的第一个 spring-boot 项目,我在使用 tomcat 时遇到了问题。服务器不想启动。项目中没有使用玻璃鱼,这个消息我越发惊讶。该项目是在 Maven 中创建的。我已经坐了好几个小时了,但我找不到问题所在。任何人都可以帮助我吗?
2019-12-11 16:21:30.775 WARN 10436 --- [ main] o.a.tomcat.util.scan.StandardJarScanner : Failed to scan [file:/C:/Users/maxwell/.m2/repository/org/glassfish/hk2/hk2/2.6.1/hk2-utils.jar] from classloader hierarchy
java.io.IOException: java.lang.reflect.InvocationTargetException
at org.apache.tomcat.util.compat.Jre9Compat.jarFileNewInstance(Jre9Compat.java:236) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
Run Code Online (Sandbox Code Playgroud)
这是我的 pom.xml 文件:
2019-12-11 16:21:30.775 WARN 10436 --- [ main] o.a.tomcat.util.scan.StandardJarScanner : Failed to scan [file:/C:/Users/maxwell/.m2/repository/org/glassfish/hk2/hk2/2.6.1/hk2-utils.jar] from classloader hierarchy
java.io.IOException: java.lang.reflect.InvocationTargetException
at org.apache.tomcat.util.compat.Jre9Compat.jarFileNewInstance(Jre9Compat.java:236) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
Run Code Online (Sandbox Code Playgroud) 我想创建一个 build.gradle 文件,它将加载另一个文件。
第二个文件应该有“defaulttasks”,这意味着当第一个文件中不存在任务时它们应该执行。
文件一:
apply from ("..otherfile.gradle")
task "hello"(overwrite: true) {
doFirst{
println "hello from here"
}
}
Run Code Online (Sandbox Code Playgroud)
第二个文件:
task "hello" {
doFirst{
println "i am the old one"
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,它失败了
原因:java.lang.IllegalStateException:不支持替换可能已被其他插件使用的现有任务。为此任务使用不同的名称(“hello”)。
所以我尝试将第二个文件而不是任务更改为tasks.register("hello")
之后它不会失败,但它也会执行第二个。如何覆盖任务以使默认任务不再运行?
java ×5
gradle ×4
asynchronous ×1
bash ×1
checksum ×1
dependencies ×1
docker ×1
gretty ×1
groovy ×1
header ×1
jsr356 ×1
liquibase ×1
maven ×1
obfuscation ×1
overriding ×1
overwrite ×1
postgresql ×1
proguard ×1
sha512 ×1
spring ×1
spring-boot ×1
tomcat ×1
tomcat9 ×1
try-catch ×1
tyrus ×1
unzip ×1
websocket ×1
xvfb ×1