我最近尝试导入现有的Gradle项目,使用启动窗口中的"打开项目"选项和现有的build.gradle文件来自动设置项目.
在我这样做之后,IntelliJ中出现了一条错误消息,说:
无法使用Gradle安装'/Users/myUser/Tools/gradle-1.3'获取类型'BasicIdeaProject'的模型.构建文件'/Users/myUser/IdeaProjects/myProject/database/build.gradle'行:20评估项目':database'时出现问题.评估项目':database'时出现问题.在PATH中找不到'play'命令.确保已安装Play Framework 2.0并在路径中
看起来,IntelliJ抱怨我没有将play框架添加到我的PATH变量中.虽然shell的输出告诉某事.其他:
echo $PATH;
/usr/local/bin:/Users/myUser/Library/Ruby/Gems/1.8/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/Users/myUser/.yadr/bin:/Users/myUser/.yadr/bin/yadr:/Users/myUser/Tools/gradle/bin:/usr/local/Cellar/mongodb/2.2.2-x86_64//bin:/Users/myUser/Tools/groovy/bin:/Users/myUser/Tools/play-2.0
Run Code Online (Sandbox Code Playgroud)
我还写了一个简单的类来显示IntelliJ使用的PATH变量:
public class Playground {
public static void main(String[] args) {
System.out.println( System.getenv( "PATH" ));
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行这个类时,它给了我以下输出:
/usr/bin:/bin:/usr/sbin:/sbin
Run Code Online (Sandbox Code Playgroud)
看起来,IntelliJ完全忽略了shell中设置的PATH变量.所以我想知道如何操作/配置IntelliJ来识别这个PATH变量?
我使用的shell是zsh.
提前致谢
我有一组可能重叠的日期范围输入。我想创建具有调整日期的新日期范围,而不是组合这些重叠的日期范围,例如:
|---------------------–|
|-----|
|--------------–|
Run Code Online (Sandbox Code Playgroud)
最终应该是:
|-------|---|-|--------|----|
Run Code Online (Sandbox Code Playgroud)
有没有一种有效的方法可以用 Java 解决这个问题?
提前致谢!
更新: 我没有在我的第一个问题中提到我自己的方法,所以这里是:我只是简单地取一个时间间隔的开始和结束日期并将其添加到一个排序集中。之后,我会遍历该集合并根据重新排序的日期创建新的间隔。
我想知道是否可以在gradle中定义一个源集(例如integrationTests),它可以应用于所有使用'java'插件的子项目?
就像是
sourceSets {
integTest {
java.srcDir file('src/integration-test/java')
resources.srcDir file('src/integration-test/resources')
compileClasspath = sourceSets.main.output + configurations.integTest
runtimeClasspath = output + compileClasspath
}
}
Run Code Online (Sandbox Code Playgroud)
这里提到的应用于所有java子项目?
感谢您提供有用的提示!
我们最近应用了几乎所有应用程序模块/组件(大约50个项目)使用的缓存解决方案.为了更好地了解在不同的系统"位置"上执行哪些缓存操作,我们为当前执行的缓存操作添加了日志记录,包括堆栈跟踪,以准确了解触发缓存操作的内容.
我们当前的方法如下所示:我们从新的Throwable()中获取堆栈跟踪,过滤不相关的行并记录剩余的堆栈跟踪.尽管如此,创建一个新的异常以便记录是不便宜的.由于我们不直接使用缓存,而是通过休眠,因此找不到哪个调用者在没有访问堆栈跟踪的情况下触发了操作就不那么容易了.
我的问题是:是否有一个更高效的解决方案来访问当前的堆栈跟踪然后Throwable().getStackTrace或Thread.currentThread().getStackTrace()?
我们在客户端 - 服务器模式下使用hazelcast.hazelcast集群包含2个hazelcast节点,我们有大约25个客户端连接到集群.
我现在要看的是一个简单的检查,试图找出群集是否还活着.它应该是一个相当便宜的操作,因为这种检查会经常发生在每个客户端上(我可以想象每秒一次).
这样做的最佳方法是什么?
我写了一个简单的"教程"应用程序,它提供了一个名为"世界端点"的REST接口,您可以使用它来添加居民等.这样做的示例json请求可能如下所示:
{
"name": "Sergio Gonzales",
"age": "34",
"languages": [
{ "id": "119" },
{ "id": "14" }
],
"homeland": { "id": "121" },
"hometown": { "id": "155" }
}
Run Code Online (Sandbox Code Playgroud)
我想添加一个加载测试来测试新居民的"创造".为了获得数据,我有三个不同的来源:
前两个将用于创建随机名称(当然,没有高度复杂的方法来创建有意义的数据).最后一个将用于选择国土,家乡和母语的ID.此外,我会随机选择额外的0 - 3种语言.
我认为我必须为此编写一个自己的进纸器但遗憾的是,自发布2.xx后,自定义进纸器的文档似乎已经消失
写入馈线的好方法是什么?我的第一个想法是直接加载csv数据,如下所示:
Source.fromInputStream(getClass.getResourceAsStream( "/名/ first_names.csv")).getLines.toSet
不确定使用csv("first_names.csv")是否会更好?
除了我也不知道,如何通过动态创建的数据替换json中的"语言"部分?是否有可能通过语言ID列表并自动转换为有效的json数组?
这是我的第一个工作版本.它有缺陷,但它基本上做我想要的.如果有人建议如何增强,请不要犹豫(我对scala很新).
package com.u6f6o.apps.hazelnate.load.scenario
import io.gatling.core.Predef._
import io.gatling.core.feeder.Record
import io.gatling.http.Predef._
import scala.concurrent.forkjoin.ThreadLocalRandom
class Insert100kInhabitants extends Simulation {
val random = ThreadLocalRandom.current
val footprints = csv("data/footprints.csv").records
val forenames = csv("data/forenames.csv").records
val surnames = csv("data/surnames.csv").records
val httpConf = http …
Run Code Online (Sandbox Code Playgroud) 我最近创建了一些Docker镜像,以便设置一个具有开放VPN和防火墙(iptables)支持的容器.
到目前为止,大多数事情都运行良好,但由于防火墙存在一些问题,我添加了一些更多的iptables规则来将丢弃的软件包记录到/ var/log/messages.我意识到,即使删除了某些内容,也无法在/ var/log下找到日志文件.
因此我的问题是:Alpine Linux如何处理(系统)日志记录以及如何具体检查iptables日志?
UPDATE
正如larsks所指出的那样,内核中已禁用默认日志记录,以防止日志泛滥导致DDOS攻击.
为了让日志工作,我安装了ulogd并按照这里的说明操作.
pgx 是否为“where in”子句提供任何支持?我在另一个 stackoverflow 线程中发现应该使用字符串连接来手动构建查询。IMO 虽然这有点容易出错,因为您必须自己处理转义 / sql 注入等。
我也试图自己弄清楚:
const updatePurgedRecordingsStmt = "update recordings set status = 'DELETED', deleted = now() where status <> 'DELETED' and id in ($1);"
func (r *Repository) DeleteRecordings() error {
pool, err := r.connPool()
if err != nil {
return errors.Wrap(err, "cannot establish connection")
}
pgRecIds := &pgtype.Int4Array{}
if err := pgRecIds.Set([]int32{int32(1), int32(2)}); err != nil {
return errors.Wrap(err, "id conversion failed")
}
if _, err = pool.Exec(updatePurgedRecordingsStmt, pgRecIds); err != nil {
return …
Run Code Online (Sandbox Code Playgroud) 我编写了一个build.gradle脚本来自动从给定的URL下载hazelcast.之后文件被解压缩,只有mancenter.war和origin zip文件保留在目标目录中.稍后在这个war文件被引用为jetty run.
尽管如此,虽然我为我的两个任务定义了outputs.file,但是当我执行gradle clean时,文件不会被清除.因此,当我执行gradle clean时,我想知道我必须做什么才能删除下载和解压缩的文件.这是我的脚本:
顺便说一句,如果您有任何建议如何增强脚本,请不要犹豫告诉我!
apply plugin: "application"
dependencies {
compile "org.eclipse.jetty:jetty-webapp:${jettyVersion}"
compile "org.eclipse.jetty:jetty-jsp:${jettyVersion}"
}
ext {
distDir = "${projectDir}/dist"
downloadUrl = "http://download.hazelcast.com/download.jsp?version=hazelcast-${hazelcastVersion}"
zipFilePath = "${distDir}/hazelcast-${hazelcastVersion}.zip"
warFilePath = "${distDir}/mancenter-${hazelcastVersion}.war"
mainClass = "mancenter.MancenterBootstrap"
}
task downloadZip() {
outputs.file file(zipFilePath)
logging.setLevel(LogLevel.INFO)
doLast {
ant.get(src: downloadUrl, dest: zipFilePath)
}
}
task extractWar(dependsOn: downloadZip) {
outputs.file file(warFilePath)
logging.setLevel(LogLevel.INFO)
doLast {
ant.unzip(src: zipFilePath, dest: distDir, overwrite:"true") {
patternset( ) {
include( name: '**/mancenter*.war' )
}
mapper(type:"flatten")
}
}
}
task startMancenter(dependsOn: extractWar, type: …
Run Code Online (Sandbox Code Playgroud) 我想知道是否可以使用gradle动态创建源集.我当前项目的目录层次结构如下所示:
每个模块文件夹(foo和bar)都应分配自己的源集.原因是我想动态创建dbFitTestFoo和dbFitTestBar等任务.我目前的方法如下:
ext.dbFitModulesDir = "dbfit-junit/module"
ext.dbFitTestSpecs = ["java", "groovy", "scala", "resources"]
ext.dbFitModules = []
file(dbFitModulesDir).eachDir{ module ->
dbFitModules << module.name
}
/** this needs to be done dynamically for each "module" **/
sourceSets {
integrationTest { sourceSet ->
dbFitModules.each{ module ->
dbFitTestSpecs.each { spec ->
if (!sourceSet.hasProperty(spec)) {
return
}
sourceSet."$spec".srcDir file("$dbFitModulesDir/$module/$spec")
}
}
}
}
dbFitModules.each{ module ->
task "dbFitTest${module.capitalize()}"(type: Test) {
group = "Verification"
description = "Run dbFit tests for $module"
doLast {
testClassesDir …
Run Code Online (Sandbox Code Playgroud) 我的一个项目有一个名为"tags"的子文件夹.看起来,git会忽略这个文件夹,虽然我没有在我的.gitignore文件中定义它.
所以我猜有一个"关键字"列表,如"标签",默认情况下被git忽略?
这是.gitignore文件的内容
# Java: https://github.com/github/gitignore/blob/master/Java.gitignore
*.class
**/classes/
# Package Files #
*.jar
*.war
*.ear
# IDEA: https://github.com/github/gitignore/blob/master/Global/IntelliJ.gitignore
*.iml
*.ipr
*.iws
.idea/
# Mac OS X: https://github.com/github/gitignore/blob/master/Global/OSX.gitignore
.DS_Store
.AppleDouble
Icon
# Thumbnails
._*
# Files that might appear on external disk
.Spotlight-V100
.Trashes
# Gradle
.gradle/
**/build/
out/
# Leiningen and others
**/target/
Run Code Online (Sandbox Code Playgroud) java ×4
gradle ×3
source-sets ×2
build ×1
database ×1
docker ×1
gatling ×1
git ×1
gitignore ×1
go ×1
hazelcast ×1
intersection ×1
intervals ×1
load-testing ×1
logging ×1
path ×1
performance ×1
pgx ×1
postgresql ×1
shell ×1
stack-trace ×1