Maven 项目中 TLD 文件的 correct/recommended 位置是什么

What is the correct/recommended location of TLD file in Maven project

我正在构建自定义标签,我希望将其作为单个 jar 文件提供。我似乎遇到了 tld 文件以及如何将其包含到构建过程中的问题。

我当前的文件夹结构:

src
license.md
    main
        java
            my.package
                class1.java
                class2.java
        resources
            META-INF
                customtag.tld

pom.xml 的一部分(.tld 文件默认不包含在构建过​​程中)

<resources>
<resource>
                <directory>${basedir}/src/main/resources/META-INF</directory>
                <targetPath>META-INF</targetPath>
                <filtering>true</filtering>
                <includes>
                    <include>customtag.tld</include>
                </includes>
 </resource>

以上有效但是:

  1. 我觉得不太好,尤其是目录的路径
  2. 在 NetBeans 中,额外的分支是在项目视图中创建的。不用说这看起来真的很糟糕。
  3. 我需要 pom.xml 中的条目,否则 .tld 文件将不会包含在 jar 中。

第一个问题: Maven 中是否有一些设置默认包含 ${basedir}/src/main/resources/META-INF 文件夹内容?


替代方法:

src
license.md
ckeditor.tld
    main
        java
            my.package
                class1.java
                class2.java

pom.xml 的一部分(.tld 文件默认不包含在构建过​​程中)

<resource>
                <directory>${basedir}</directory>
                <targetPath>META-INF</targetPath>
                <filtering>true</filtering>
                <includes>
                    <include>customtag.tld</include>
                </includes>
 </resource>

通过这种方法,pom.xml 中没有长路径,Netbeans 项目视图中没有创建额外的分支,但我不确定该位置是否正确。我发现很多这样的链接 Where do I put the .tld file so that the resulting JAR file built with maven2 is properly packaged? 说项目代码中的 tld 文件应该放入 src/main/resources/META-INF.

第二题: .tld 文件在 Maven 项目中的 correct/recommended 位置是什么?请注意,我问的是项目位置,而不是创建的 jar 文件中的位置(它必须是 META-INF,我知道)。

我想我已经解决了我的问题,答案如下:

First Question: Is there some setting in Maven which will include ${basedir}/src/main/resources/META-INF folder contents by default?

我花了相当多的时间在互联网上搜索,我可以说 不,没有,你需要在 pom.xml 中写下条目

Second Question: What is the correct/recommended location of the tld file inside the Maven project?

看来正确或推荐的位置毕竟是 src/main/resources/META-INF

我的问题的解决方案: 我在 <build> level 上复制了 <resources> 中定义的 .tld 文件。

<resources>
    <resource>
         <directory>${basedir}/src/main/resources/META-INF</directory>
         <targetPath>META-INF</targetPath>
         <filtering>true</filtering>
         <includes>
             <include>customtag.tld</include>
         </includes>
     </resource>
<resources>

我已将该资源移至 maven-resources-plugin<resources>。目录的路径仍然很长,但这是我可以接受的,特别是通过这种方法我可以将我的 .tld 文件保留在 src/main/resources/META-INF 中,并且 Netbeans 项目视图中那个烦人的额外分支现在消失了。

<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.6</version>
        <configuration>
            <encoding>UTF-8</encoding>
        </configuration>
        <executions>
            <execution>
                <id>copy-resources</id>
                <phase>validate</phase>
                <goals>
                    <goal>copy-resources</goal>
                </goals>
                <configuration>
                    <outputDirectory>${project.build.outputDirectory}</outputDirectory>
                    <resources>
                        <resource>
                            <directory>${basedir}/src/main/resources/META-INF</directory>
                            <targetPath>META-INF</targetPath>
                            <filtering>true</filtering>
                            <includes>
                                <include>customtag.tld</include>
                            </includes>
                        </resource>
                    </resources>
                </configuration>
            </execution>
        </executions>
    </plugin>