小编bab*_*itt的帖子

Gradle - 向现有任务添加其他任务

我正在开发一个使用EJB2s的项目.创建的EJB Jars需要在应用程序服务器捆绑在war/ear中并进行部署之前进行其他处理.

我已经创建了一个自定义任务,如果我明确地调用它(gradle ejbDeploy),它可以进行额外的处理,但是很难将它安装到gradle多项目生命周期中.我需要以某种方式将它添加到构建图中,以便在jar任务之后自动执行.

我的第一次尝试是将它添加到jar中

jar.doLast{
    ejbDeploy.execute()
} 
Run Code Online (Sandbox Code Playgroud)

这似乎适用于任意代码块,但不适用于任务

推荐的解决方案是什么?我看到三种方法:

  1. 挂钩构建图并在jar任务后显式添加它.
  2. 在jar.doLast {}中以某种方式设置它
  3. 将其设置为WAR任务执行的先决条件

有推荐的方法吗?

谢谢!

gradle valdr-bean-validation

9
推荐指数
2
解决办法
6703
查看次数

Jooq CustomTypes生成默认类型POJO

试图用Joda DateTimes生成JooQ POJO,并且遇到了一些问题.POJO使用默认的java.sql.TimeStamp值而不是DateTimes来自生成器.

代码如下.

创建表 - 此处的时间戳字段的名称已更改 - 希望确保我没有在构建系统中的某个位置访问缓存.此名称仍应使用以下正则表达式进行匹配.

CREATE TABLE nonsense (
  name VARCHAR(50) NOT NULL,
  DATETIME_TEST TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  id UUID NOT NULL,
  PRIMARY KEY(id)
);
Run Code Online (Sandbox Code Playgroud)

转换类 - 基于文档.

public class LocalDateTimeConverter implements Converter<Timestamp, LocalDateTime> {

    @Override
    public LocalDateTime from(Timestamp databaseObject) {
        return new LocalDateTime(databaseObject.getTime());
    }

    @Override
    public Timestamp to(LocalDateTime dt) {
        return new Timestamp(dt.toDateTime().getMillis());
    }

    @Override
    public Class<Timestamp> fromType() {
        return Timestamp.class;
    }

    @Override
    public Class<LocalDateTime> toType() {
        return LocalDateTime.class;
    }
}
Run Code Online (Sandbox Code Playgroud)

Jooq配置XML.基于文档(感谢抓住我的表达/表达错误卢克)!

<configuration>
  <generator>
    <database> …
Run Code Online (Sandbox Code Playgroud)

java sql jooq

5
推荐指数
1
解决办法
1574
查看次数

带有bind-port和bind-hostname的Akka Cluster

在app.conf中配置bind-hostname和bind-port,如Akka FAQ所指定的,并启动集群,我收到一个错误:

[ERROR] [07/09/2015 19:54:24.132] [default-akka.remote.default-remote-dispatcher-20] 
[akka.tcp://default@54.175.105.30:2552/system/endpointManager/reliableEndpointWriter-akka.tcp%3A%2F%2Fdefault%4054.175.105.30%3A2552-757/endpointWriter]
dropping message [class akka.actor.ActorSelectionMessage] 
for non-local recipient[Actor[akka.tcp://default@54.175.105.30:32810/]] 
arriving at [akka.tcp://default@54.175.105.30:32810] 
inbound addresses are [akka.tcp://default@54.175.105.30:2552]
Run Code Online (Sandbox Code Playgroud)

这似乎是说演员收到了一条发往端口32810(外部端口)的消息,但由于内部端口(2552)不匹配而丢弃了它.

该文件的相关部分是:

  hostname = 54.175.105.30
  port = 32810

  bind-hostname = 172.17.0.44
  bind-port = 2552
Run Code Online (Sandbox Code Playgroud)

我在2.4-M1,2.4-M2和2.4-SNAPSHOT上试过这个,都具有相同的效果.

有没有其他人遇到过这个?有什么建议?

编辑:此actor系统在Docker容器中的ECS中运行.docker container配置设置为从短暂范围转发到容器私有IP上的2552.ECS成功将hostname:port映射到bind-hosname:bind-port.该actor已成功运行并绑定到本地bind-hostname和bind-port,但正在丢弃消息并发出上述错误.

amazon-ecs akka docker akka-cluster

5
推荐指数
2
解决办法
2941
查看次数

通过 npm 链接和 typescript 本地开发的多模块

我正在尝试使用 NPM 将依赖模块 B 与其依赖项 A 链接起来。以此指导,我完成了以下操作。

项目A定义为:

{
  "name": "typescript-link-failure-a",
  "version": "1.0.0",
  "description": "",
  "main": "dist/A.js",
  "typescript": "dist/A.d.ts",
  "scripts": {
    "setup": "npm link"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "gulp": "^3.9.1",
    "gulp-typescript": "^2.13.6",
    "merge2": "^1.0.2"
  }
}
Run Code Online (Sandbox Code Playgroud)

A.ts

export class A {
    "foo":string;
}
Run Code Online (Sandbox Code Playgroud)

npm run-script setup执行以创建从此目录到全局 node_modules 的链接。

在项目B中:

{
  "name": "typescript-link-failure-b",
  "version": "1.0.0",
  "description": "",
  "main": "dist/B.js",
  "scripts": {
    "preinstall": "npm link ../A"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "gulp": "^3.9.1",
    "gulp-typescript": …
Run Code Online (Sandbox Code Playgroud)

node.js npm typescript tsc

5
推荐指数
1
解决办法
4129
查看次数

有趣的Python成语,用于删除单个条目列表中的唯一项目

今天偶然发现,认为这可能值得讨论.

用于从列表中获取单个项目的Python习惯用法

它有时会发生在我有一个列表的代码中,让我们调用它stuff,我肯定知道这个列表只包含一个项目.我想得到这个项目并把它放在一个变量中,称之为它.最好的方法是什么?在过去我曾经这样做过:

thing = stuff[0]
Run Code Online (Sandbox Code Playgroud)

但我认为这不是最好的习语.我想出了一个更好的一个:

(thing,) = stuff
Run Code Online (Sandbox Code Playgroud)

为什么这个更好?

可读性:它让读者知道东西只有一个元素.

自由断言:它使得Python断言stuff只有一个元素,所以如果我错误地在我的原始假设中stuff只有一个元素,那么Python会对我大喊大叫,然后它会在程序中的其他位置显示为一个难以发现的错误.

很难错过:前面的方法最后有一个[0].现在,这很容易在一条线上注意到thing = stuff[0].但如果这条线路像这样凌乱的话会怎么样:

thing = some_dict[my_object.get_foobar_handler()][0]
Run Code Online (Sandbox Code Playgroud)

在这种情况下,最后的[0]很容易遗漏,因为当随便看一下代码时,它似乎可能连接到该函数调用或dict查找.因此,读者可能会错过这样一个事实,即我们从列表中取出一个项目.在这种情况下,这会更好:

(thing,) = some_dict[my_object.get_foobar_handler()]
Run Code Online (Sandbox Code Playgroud)

任何"集合"的常规(指向Ulrik的道具,注意到这一点):即使东西是集合或任何其他类型的集合,此方法也有效.stuff[0] 不会对集合起作用,因为set不支持按索引号访问.玩得开心!

(http://blog.garlicsim.org/post/1198230058/python-idiom-for-taking-the-single-item-from-a-list)

总的来说,我对这个想法很不满意.他对自由断言和增加的可读性做出了令人信服的论证(如果它成为一种模式).另一方面,直到/如果它变得流行,它有点难以阅读.

社区的想法是什么?

python

3
推荐指数
1
解决办法
276
查看次数

Gradle clean <customTask>无法正常工作

我有一个自定义任务来执行Websphere EJBDeploy.我已经定义了输入和输出,并获得了成功的增量编译,但是我无法让自动生成的清理任务正常工作.

根据文档,对于具有已定义输出的名为"ejbDeploy"的自定义任务,应自动生成 cleanEjbDeploy 任务.

Pattern: clean<TaskName>: Cleans the output files of a task.
Run Code Online (Sandbox Code Playgroud)

所以这是我的自定义任务:

task ejbDeploy(dependsOn: 'jar'){
    srcFile = file(jar.archivePath)
    destDir = new File("build/ejbDeploy")

    inputs.file srcFile
    outputs.dir destDir

    def cp = project.files(
        project.sourceSets.main.output.classesDir,
        project.sourceSets.main.resources,
        project.configurations.runtime
        ).getAsPath()

    doLast{
        destDir.mkdirs()

        exec{
            executable = wasEjbDeploy
            workingDir = destDir
            args = [
                jar.archivePath,
                ".",
                jar.archiveName,
                "-cp",
                cp
            ]
        }   
    }
}
Run Code Online (Sandbox Code Playgroud)

任何人都有任何想法,为什么干净的规则不起作用?

[编辑]

这是完整的(匿名的)文件内容(自初始问题帖以来已更改):

version = '1.0-SNAPSHOT'
group = 'com.company'

buildscript {
    repositories {
        mavenLocal()
        mavenCentral()
    }
    dependencies {
        classpath group: …
Run Code Online (Sandbox Code Playgroud)

gradle

2
推荐指数
1
解决办法
4234
查看次数