Обратитесь к путям проекта Maven из Java - PullRequest
1 голос
/ 19 сентября 2011

Мне нужно программно собрать несколько путей внутри проекта Maven, в частности, чтобы сослаться на артефакт проекта. Использование

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

работает для пути относительно папки target / classes проекта, но поскольку артефакт находится в папке target , на него невозможно ссылаться. Путь как

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

совсем не убеждает меня хотя бы в том, что имя папки target , хотя и стандартно, не является переносимым.

Существует ли решение для библиотеки с поддержкой Maven, использующее относительный путь?

1 Ответ

1 голос
/ 19 сентября 2011

MavenProperties можно записать в файл манифеста с помощью maven archiver , который используется плагином maven war или плагином maven jar.

Если у вас есть веб-приложение, вы также можете передать некоторую информацию в файл 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>
...