我正在创建一个Eclipse插件来处理
显示MF
项目数量。然而,格式不是我喜欢的。
考虑下面的代码:
final String[] bundles = { "org.acme.alpha", "org.acme.beta", "org.acme.gamma", "org.acme.delta", "org.acme.epsilon", "org.acme.zeta", "org.acme.eta", "org.acme.theta", "org.acme.iota", "org.acme.kappa", "org.acme.lambda" };
try (ByteArrayInputStream in = new ByteArrayInputStream("Manifest-Version: 1.0\n\n".getBytes())) {
Manifest manifest = new Manifest(in);
manifest.getMainAttributes().putValue("Require-Bundle", Arrays.stream(bundles).collect(Collectors.joining(",")));
manifest.write(System.out);
}
然后,相关输出为:
Require-Bundle: org.acme.alpha,org.acme.beta,org.acme.gamma,org.acme.del
ta,org.acme.epsilon,org.acme.zeta,org.acme.eta,org.acme.theta,org.acme.
iota,org.acme.kappa,org.acme.lambda
看起来非常丑陋,尤其是如果你加上
bundle-versions
加入混合。我宁愿每捆一行。
天真的做法是自己加一个换行符,所以
显示MF
不需要打破每72个字符。于是我又加了一句
Arrays.stream(bundles).collect(Collectors.joining(",\n "))
.结果是:
Require-Bundle: org.acme.alpha,
org.acme.beta,
org.acme.gamma,
org.acme.
delta,
org.acme.epsilon,
org.acme.zeta,
org.acme.eta,
org.acme.theta,
o
rg.acme.iota,
org.acme.kappa,
org.acme.lambda
这看起来几乎正确,除了。。。每72个字符还有一个额外的换行符,只是不太明显。
除了作为块之外,有没有其他方法可以格式化清单文件中的长字符串?如果是,我该怎么做?