作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 <zipfileset>
转换了我们的自定义(当然之前可以工作)Ant 任务作为在 <zip>
之间重用资源组的唯一方法任务和我们的自定义任务原来是使用资源集合。所以本质上,我现在只有 <fileset>
包裹于<mappedresources>
.
<project name="test" default="installers">
<target name="installers">
<union id="common">
<fileset prefix="." dir="." includes="1"/>
<mappedresources>
<fileset dir="." includes="2"/>
<globmapper from="*" to="3/*"/>
</mappedresources>
</union>
<generate-wix>
<resources refid="common"/>
</generate-wix>
</target>
</project>
自定义任务看起来像这样,省略了所有 WiX 特定的废话,因为这不是问题(或者至少现在不是问题。)
public class GenerateWixTask extends Task {
private Resources resources;
@Override
public void execute() throws BuildException {
// omitting root element setup
Iterator<?> resourceIterator = resources.iterator();
while (resourceIterator.hasNext()) {
Resource resource = (Resource) resourceIterator.next();
// This is the relative path with respect to the WiX install.
File filePath = new File(resource.getName());
//String fileName = filePath.getName();
// This is the file which will be used as the actual data.
//TODO: How to get this?
System.out.println("resource: " + resource.getName());
System.out.println(" which is a " + resource.getClass());
System.out.println(" name = " + resource.getName());
System.out.println(" location = " + resource.getLocation());
FileProvider provider = (FileProvider) resource.as(FileProvider.class);
if (provider != null) {
System.out.println(" file = " + provider.getFile());
}
}
// omitting code to write the XML
}
public void setResourcesref(Reference resourcesref) {
createResources().setRefid(resourcesref);
}
public Resources createResources() {
if (resources == null) {
resources = new Resources();
resources.setProject(getProject());
}
return resources;
}
}
这给我的输出如下:
[generatewix] resource: 1
[generatewix] which is a class org.apache.tools.ant.types.resources.FileResource
[generatewix] name = 1
[generatewix] location =
[generatewix] file = C:\Data\test\1
[generatewix] resource: 3/2
[generatewix] which is a class org.apache.tools.ant.types.resources.MappedResource
[generatewix] name = 3/2
[generatewix] location =
在阅读 MappedResource 的源代码时,专门处理 FileProvider 以隐藏源文件(注释听起来像是为了防止滥用......我并不是完全试图滥用它。)但我确实想找出文件的路径,因为我正在编写一个 XML 文件以供另一个应用程序读取...
有解决办法吗?
最佳答案
很明显,映射路径不能作为真实文件
的源。和MappedResource不是FileResource .
尝试仅从 getInputStream() 读取数据并将其写入由 getName()
指定的新路径。
关于java - 为什么我无法获取 <mappedresource> 内资源的源文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12925891/
我使用 转换了我们的自定义(当然之前可以工作)Ant 任务作为在 之间重用资源组的唯一方法任务和我们的自定义任务原来是使用资源集合。所以本质上,我现在只有 包裹于 .
我是一名优秀的程序员,十分优秀!