从Java引用Maven项目路径

发布于 2024-12-05 12:40:03 字数 388 浏览 0 评论 0原文

我需要以编程方式收集 Maven 项目内的一些路径,特别是引用项目工件。 使用

URL MyClass.class.getClassLoader().getResource(String name)

作品用于相对于项目的 target/classes 文件夹的路径,但由于工件位于 target 文件夹中,因此无法引用它。像这样的路径

System.getProperty("user.dir") + "/target"

根本无法说服我,至少因为 target 文件夹名称虽然标准,但不能安全地移植。

是否有一个利用相对路径的 Maven 感知库解决方案?

I need to programmatically gather some paths inside a Maven project, in particular to refer to the project artifact.
Using

URL MyClass.class.getClassLoader().getResource(String name)

works for a path relative to the target/classes folder of the project, but since the artifact sits in the target folder it is not possible to reference it. A path like

System.getProperty("user.dir") + "/target"

does not convince me at all at least for the fact that the target folder name, while standard, is not safely portable.

Is there a Maven-aware library solution that exploits a relative path?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

孤蝉 2024-12-12 12:40:03

MavenProperties 可以使用 maven archiver 由 maven war 插件或 maven jar 插件使用。

如果您有 Web 应用程序,那么您也可以将一些信息传递到 web.xml 文件。

这是我的一个项目的示例:

from pom.xml:
------------------------------------------------
<properties>
    <maven.build.timestamp.format>dd.MM.yyyy' 'HH:mm:ss</maven.build.timestamp.format>
    <build-version>${env.SVN_REVISION}</build-version>
    <build-date>${maven.build.timestamp}</build-date>
</properties>
.
.
.
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.0.2</version>
                <configuration>
                    <webResources>      
                        <webResource>
                            <directory>${basedir}/src/main/webapp/WEB-INF</directory>
                            <includes>
                                <include>web.xml</include>
                            </includes>
                            <targetPath>WEB-INF</targetPath>
                            <filtering>true</filtering>
                        </webResource>
                    </webResources>

from web.xml:
------------------------------------------------
<context-param>
    <param-name>BUILD_VERSION</param-name>
    <param-value>${build-version}</param-value>
</context-param>
<context-param>
    <param-name>BUILD_DATE</param-name>
    <param-value>${build-date}</param-value>
</context-param>

MavenProperties can be written to a manifest file using the maven archiver which is used by the maven war plugin or the maven jar plugin.

If you have a web app, then you can pass some information to the web.xml file, too.

This is an example of one of my projects:

from pom.xml:
------------------------------------------------
<properties>
    <maven.build.timestamp.format>dd.MM.yyyy' 'HH:mm:ss</maven.build.timestamp.format>
    <build-version>${env.SVN_REVISION}</build-version>
    <build-date>${maven.build.timestamp}</build-date>
</properties>
.
.
.
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.0.2</version>
                <configuration>
                    <webResources>      
                        <webResource>
                            <directory>${basedir}/src/main/webapp/WEB-INF</directory>
                            <includes>
                                <include>web.xml</include>
                            </includes>
                            <targetPath>WEB-INF</targetPath>
                            <filtering>true</filtering>
                        </webResource>
                    </webResources>

from web.xml:
------------------------------------------------
<context-param>
    <param-name>BUILD_VERSION</param-name>
    <param-value>${build-version}</param-value>
</context-param>
<context-param>
    <param-name>BUILD_DATE</param-name>
    <param-value>${build-date}</param-value>
</context-param>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文