我正在创建一个Eclipse插件来处理项目的 Manifest.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
添加到组合中。我宁愿每捆一线。
天真的方法是自己添加一个换行符,因此 Manifest.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个字符还有一个换行符,可见性只差一点。
除了作为块以外,是否有其他方法可以格式化清单文件中的长字符串?如果是这样,我该怎么办?