小编Ali*_*cia的帖子

为什么gradle jar用`build/libs`编写?

根据Jar插件文档,输出目录由destinationDir属性控制:

  • 文件 destinationDir

    生成存档的目录.

    使用java插件默认: project.distsDir

查看Project类文档,提到了相同的属性:

java插件添加的属性

  • distsDir:生成TAR和ZIP存档的目录.
  • distsDirName:分发目录的名称.这相对于项目的构建目录进行了解释.

然后谷歌搜索我找到一个文件,指定他们的默认值:

  • 文件 distsDir(只读)

    生成TAR和ZIP存档的目录.

    使用java插件默认: ${project.buildDir}/${project.distsDirName}

  • distsDirName

    分发目录的名称.这相对于项目的构建目录进行了解释.

    使用java插件默认: 'distributions'

所有这些文档都指向相同的Gradle版本,与我安装的版本相匹配.

我在我的添加中build.gradle检查这些属性的实际值:

println("distsDirName = " + project.distsDirName)
println("distsDir = " + project.distsDir.toString())

jar {
    println("jar.destinationDir = " + destinationDir)
}
Run Code Online (Sandbox Code Playgroud)

最后,我运行./gradlew并检查输出:

distsDirName = distributions
distsDir = /home/ntrrgc/myProject/build/distributions
jar.destinationDir = /home/ntrrgc/myProject/build/libs
Run Code Online (Sandbox Code Playgroud)

为什么不jar.destinationDir尊重其记录的默认值?

gradle

12
推荐指数
1
解决办法
7091
查看次数

迭代lxml etree中的文本和元素

假设我有以下XML文档:

<species>
    Mammals: <dog/> <cat/>
    Reptiles: <snake/> <turtle/>
    Birds: <seagull/> <owl/>
</species>
Run Code Online (Sandbox Code Playgroud)

然后我得到这样的species元素:

import lxml.etree
doc = lxml.etree.fromstring(xml)
species = doc.xpath('/species')[0]
Run Code Online (Sandbox Code Playgroud)

现在我想列出按物种分组的动物清单.我怎么能用ElementTree API做到这一点?

python lxml elementtree

8
推荐指数
2
解决办法
4499
查看次数

如何处理 Node.js 可写流中的结束信号?

使用stream.Writablenode.js 0.10的基类,我如何处理消费者调用的情况.end(),从而表明没有更多数据可用?

文档中,唯一告诉要在Writable子类中实现的方法是_write,但我找不到任何干净的方法来注意到输入何时耗尽。

stream node.js

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

如何在Q Promise中显示未处理错误的异常

我注意到,如果.then()由于任何错误(例如,对未定义变量的操作)而导致回调失败并且没有.catch()关联,则错误将被忽略。

在开发过程中这非常不舒服。

例如,此代码将退出而不会显示任何错误:

var Q = require('q');

var promise = Q('something');
promise
.then(function() {
  buggyCode();
})
Run Code Online (Sandbox Code Playgroud)

可能的解决方法是手动添加一个像这样的错误处理程序,但是那没有内置的功能吗?

.catch(function(error) {
  console.error(error.stack);
})
Run Code Online (Sandbox Code Playgroud)

q

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

如何在当前的TypeScript中使用Bluebird?

我就是不明白。一旦这相对容易,我就从DefinitelyTyped下载了该代码段,假设它是全局声明的,我添加了脚本并开始工作。现在看来,我别无选择,只能使用复杂的程序包管理器和异步加载系统,并可能带有用于生产的优化程序。

理想情况下,我只想要一些这样的TypeScript代码

// maybe some import?
Promise.resolve("foo").then(function(msg) { 
    console.log(msg);
}
Run Code Online (Sandbox Code Playgroud)

像这样编译成一些JavaScript:

Promise.resolve("foo").then(function(msg) { 
    console.log(msg);
}
Run Code Online (Sandbox Code Playgroud)

我希望它能够在浏览器中或像Rhino这样的最小环境中运行。如果需要,我可以包括require.js,almond.js,使用browserify或其他工具构建,但是我希望它不需要XHR就可以工作。

到目前为止,我已经尝试过:

  • 使用全局(环境)模块:找不到适用于Bluebird的模块。
  • 将ES6导入与AMD模块一起使用,进行设置outFile以获取我的代码束,然后依次包含文件:almond.js,bluebird.js,my-code.js以及一些需要主模块才能正常运行的代码:(Error: See almond README: incorrect module build, no module name显然在bluebird.js我从官方下载页面中AMD并没有定义一个名字,我应该建立它自己还是什么......?)
  • 与使用完全require.js:的上一点相同missing bluebird
  • 与上一点相同,使用类似垫片的requirejs.config({shim: { bluebird: { exports: "Promise" }}}):: exception from uncaught JavaScript throw: Error: Mismatched anonymous define() module和错误消息中的Bluebird的完整代码。
  • 修补Bluebird定义文件:在ES6模式下不允许: Subsequent variable declarations must have the same type.

我觉得我在这样一个看似简单的请求上浪费了太多时间,所以我将尝试询问StackOverflow :)

amd typescript bluebird

4
推荐指数
2
解决办法
4377
查看次数

如何在Grunt项目中包含Javascript库?

我正在尝试为客户端开发学习现代Javascript工作流程,所以我试试Grunt.

我想要一些像AngularJS,Bootstrapmoment.js这样的库,并将它们安装在我的dist目录中.如果可能的话,我想为他们提供一些包管理.

我已经看过Bowergrunt-bower-task,但我不确定它们适合这项任务,因为并非所有软件包都包含缩小版本和grunt-bower-task似乎无视那些.

是否有一个Grunt友好的包管理解决方案来管理客户端Javascript库,或者我应该继续将它们下载到一个vendor文件夹,然后告诉Grunt将它们复制到dist它们.js.min.js变体中的文件夹中?

javascript project gruntjs bower

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

如何获取node.js中$ PATH中可执行文件的完整路径?

在node.js中是否有一个函数来查找位于其中某处的可执行文件$PATH,类似于whichBash的内置文件?

如果没有,我总是可以尝试解析process.env.PATH并手动搜索每个目录,但我宁愿避免这种情况.

operating-system node.js

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

如何在两个(line,col)对中在vimscript中进行视觉选择?

鉴于Vim中的以下文本:

ab
cde
Run Code Online (Sandbox Code Playgroud)

从(第1行,第3列)到(第2行,第4列)这两个位置,如何在Vimscript中进行视觉选择,包括两端?

注意(第1行,第3栏)是指后面 的位置b,通常在正常模式下无法选择.

vim

0
推荐指数
1
解决办法
250
查看次数