来自Maven repo的包中缺少文件

时间:2011-06-16 20:46:10

标签: java configuration maven

目前,我正在尝试在我的项目中使用Jazzy拼写检查库。但是,我偶然发现了一些奇怪的异常。简而言之,很明显,Maven repo中的Jazzy包被删除了属性文件,这可能是不必要的(看起来,即使没有它也可以使用库),但是在使用程序时,它会留下异常控制台中的消息。

那么,有没有简单的方法可以将* .properties文件复制到使用Maven的* .jar中的确切位置或者处理它的最佳方法是什么?

[编辑] 如果没有此文件,库将不会提供建议,只会指示不在字典中的单词

4 个答案:

答案 0 :(得分:1)

  

那么,有没有简单的方法可以将* .properties文件复制到使用Maven的* .jar中的确切位置或者处理它的最佳方法是什么?

请记住,JAR文件只是具有不同扩展名的ZIP存档。您可以“解压缩”JAR并以编程方式添加所需的任何文件,如属性文件,如果需要。然后你需要再次将它全部拉回来,JAR应该按预期工作。

这个解决方案的一个棘手的问题是你使用Maven进行依赖管理,这会让你的项目操作JAR变得棘手或困难。在这种情况下,Ant会成为你的朋友。

无论如何,我认为这不是最好的解决方案。另外我不喜欢批评Maven。 ;)

我认为正确的做法是在您自己的项目中添加您自己的whatever.properties文件版本。如果您在与Jazzy库完全相同的包结构下放入src/main/resources文件夹,它应该在运行时正确找到它。

因此,如果Jazzy将属性文件保存在com.jazzy.props包中,请将文件放在您自己的项目中,如下所示......

<project.root>/src/main/resources/com/jazzy/props/whatever.properties

我实际上并没有尝试这个,但它应该在理论上起作用。祝你好运!

答案 1 :(得分:1)

这是一个理论:Jazzy存储属性文件以及java源文件(Example)。这不是Maven处理东西的方式。 Maven认为这些资源属于src/main/resources

所以我想Maven端口的任何人都忘记将src / main / java文件夹添加为资源文件夹(如果你保留java文件中的资源,你需要这样做):

<resources>
    <resource>
        <directory>src/main/java</directory>
        <!-- or whatever the source dir is called -->
        <excludes>
            <exclude>**/*.java</exclude>
        </excludes>
    </resource>
    <!-- also add src/main/resources if you need it -->
</resources>

所以我猜你最好的办法是提交一个错误并要求他们包含这个配置。

答案 2 :(得分:0)

如果涉及记录器,您可以禁用该记录器。

答案 3 :(得分:0)

由于jazzy是开源的,因此它被分叉并包含在RText中,这是另一个开源项目。我碰巧需要RText(使用Ant构建)用于另一个开源maven项目(SQuirrel SQL Client),所以我申请了Sonatype以获得使用net.sf.jazzy groupId的权限。由于RText附带的版本有bug修复和其他mod,我们选择使用“特殊”versionId(0.5.2-rtext-1.4.1),希望(希望)表明这个版本不是“官方版”版本0.5.2的jazzy版本,而不是RText版本1.4.1附带的版本。不幸的是,我在准备初始版本时省略了资源(配置和翻译属性文件)。我已经通过发布另一个版本来更正了这一点:http://repo1.maven.org/maven2/net/sf/jazzy/jazzy/0.5.2-rtext-1.4.1-2/

相关问题