到目前为止,我们有一个项目结构src
,其中包含名为的单个源文件夹,其中包含三个模块的源代码。我想做的是:
1)编译源代码。这可以通过sourceSets定义轻松完成:
sourceSets {
main {
java {
srcDir 'src'
}
}
}
2)将编译结果放入三个jar中。我通过三个“ jar”类型的任务来做到这一点:
我现在通过三个单独的任务来执行此操作:
util.jar
task utilJar(type: Jar) {
from(sourceSets.main.output) {
include "my/util/package/**"
}
}
client.jar
task clientJar(type: Jar) {
from(sourceSets.main.output) {
include "my/client/package/**"
}
}
server.jar
task serverJar(type: Jar) {
from(sourceSets.main.output) {
include "**"
}
excludes.addAll(utilJar.includes)
excludes.addAll(clientJar.includes)
}
问题是server.jar
应该包含client.jar
and 中不包含的所有类util.jar
。在ant
build脚本中,我们通过使用difference
ant任务解决了这个问题。如何做到这一点(我当前的方法不起作用)?
也许我的方法是完全错误的。请指教。
PS到目前为止,我们不能更改项目源代码文件夹的结构。
我将在这里发布我的工作解决方案作为答案(在gradle的论坛上有一个提示)。
gradle中的作用域非常奇怪:)我认为每个任务定义都会创建一个“任务”类的对象,在这种特定情况下,它类似于“
JarTask”。然后,我可以从build.gradle脚本中的任何位置访问该类的任何属性。但是,我找到了唯一可以看到模式的位置,这些模式包含在jar文件中-在from
一个任务块内。因此,我目前的工作解决方案是:
1)定义项目级集合以包含要从中排除的模式 server.jar
2)排除任务from
块中的所有模式serverJar
。
请在下面查看最终版本
sourceSets {
main {
java {
srcDir 'src'
}
}
}
// holds classes included into client.jar and util.jar, so they are to be excluded from server.jar
ext.serverExcludes = []
// util.jar
task utilJar(type: Jar) {
from(sourceSets.main.output) {
include "my/util/package/**"
project.ext.serverExcludes.addAll(includes)
}
}
// client.jar
task clientJar(type: Jar) {
from(sourceSets.main.output) {
include "my/client/package/**"
project.ext.serverExcludes.addAll(includes)
}
}
// server.jar
task serverJar(type: Jar) {
from(sourceSets.main.output) {
exclude project.ext.serverExcludes
}
}
问题内容: 我想知道如何从单个文件夹中读取多个文件(无需指定文件名,只是它们是json文件)。 另外,有可能将它们转换为DataFrame吗? 能给我一个基本的例子吗? 问题答案: 一种选择是使用os.listdir列出目录中的所有文件,然后仅查找以’.json’结尾的文件: 现在,您可以使用pandas DataFrame.from_dict将json(此时为python字典)读入pandas数
问题内容: 我在项目的根目录中有一个资源文件夹/程序包,我“不想”加载某个文件。如果我想加载某个文件,我将使用class.getResourceAsStream,我会很好的!我实际上想要做的是在资源文件夹中加载一个“文件夹”,循环访问该文件夹中的文件,并获取每个文件的流,并读取内容…假设在运行时之前未确定文件名… 我该怎么办?有没有一种方法可以获取jar文件中“文件夹”中文件的列表?请注意,带有资
我有一个资源文件夹/包在我的项目的根,我“不”想加载某个文件。如果我想加载某个文件,我会使用class.getResourceStream,我会很好!!我实际上想要做的是在资源文件夹中加载一个“文件夹”,循环该文件夹中的文件,并获得每个文件的流并读取内容...假设在运行时之前未确定文件名...我该怎么办?有没有一种方法可以在你的jar文件中得到一个文件夹中的文件列表?请注意,包含资源的Jar文件与
//我得到的错误是java。尼奥。文件FileAlreadyExistsException所以据我所知,它试图将文件保存到确切的位置,而不是保存在文件中,如果我将目标地址改为“垃圾/垃圾”,我需要以这种方式保存几个文本文件。它将在那里保存一个名为垃圾的文件。txt。但在for-each的下一个循环中,它会抛出一个“已经存在”的异常。。。 有人能解释一下我如何从src文件夹将所有txt文件保存到该文
我需要编写一条Apache Camel路由 null 我可以编写两条独立的路由:1)从Active-MQ获取消息;2)使用静态文件名读取文件夹中的文件并发送到JMS-Queue。但我的要求是只从这些文件中读取内容,对于这些文件,我从JMS队列中获取详细信息。这意味着从文件中读取内容是有选择的和基于条件的。 下面是我所需的示例Java DSL路由配置。 我知道在一条路由内使用两个“from”是不可能
我正在尝试散集我的xml文件: 但我得到这个错误:java.io.FileNotFoundException:null(没有这样的文件或目录) 这是我的结构: 为什么我无法从资源文件夹中获取文件?谢谢。 更新。 重构后, URL url=this.getClass(). getResource("/xmlToParse/companies.xml"); File file=new File(url