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>
以上有效但是:
- 我觉得不太好,尤其是目录的路径
- 在 NetBeans 中,额外的分支是在项目视图中创建的。不用说这看起来真的很糟糕。
- 我需要 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>
我正在构建自定义标签,我希望将其作为单个 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>
以上有效但是:
- 我觉得不太好,尤其是目录的路径
- 在 NetBeans 中,额外的分支是在项目视图中创建的。不用说这看起来真的很糟糕。
- 我需要 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>