Используйте Maven ${project.version} в сопоставлении сервлетов web.xml в Eclipse WTP

Отредактировано, чтобы уточнить, что я прошу решение для Eclipse WTP с Tomcat.

С тех пор я заставил это работать для артефактов WAR, просто используя переменную ${project.version} в web.xml в сочетании с фильтрацией maven-war-plugin следующим образом.

<webResources>
        <resource>
            <filtering>true</filtering>
            <directory>src/main/webapp</directory>
            <includes>
                <include>**/web.xml</include>
            </includes>
        </resource>
    </webResources>
    <warSourceDirectory>src/main/webapp</warSourceDirectory>
    <webXml>src/main/webapp/WEB-INF/web.xml</webXml>

</edit>


Я хотел бы использовать значение ${project.version} в web.xml в Tomcat с запуском Eclipse WTP следующим образом.

<servlet-mapping>
    <servlet-name>jersey</servlet-name>
    <url-pattern>/api/${version}/*</url-pattern>
</servlet-mapping>

Я пробовал фильтровать следующим образом, но это не работает, я все равно получаю 404. Я знаю, что механизм фильтрации обычно применяется для доступа к переменным Maven в исходном коде, а не в web.xml, но я думаю, что это может сработать и в моем случае...

Выдержка из POM

<build>
<filters>  
    <filter>${basedir}/src/main/filters/${filter.name}.properties</filter>  
</filters>
<plugins>
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>3.2.0</version>
    <configuration>
      <webResources>
        <resource>
          <directory>${basedir}/src/main/webapp</directory>
          <filtering>true</filtering>
          <includes>  
            <include>WEB-INF/web.xml</include>  
          </includes> 
        </resource>
      </webResources>
    </configuration>
  </plugin>
...
  <properties>
    <filter.name>version</filter.name>
  </properties>      

/src/main/filters/version.properties

version=${project.version}

выдержка из файла web.xml

<servlet-mapping>
    <servlet-name>jersey</servlet-name>
    <url-pattern>/api/v${version}/*</url-pattern>
</servlet-mapping>

Я знаю, что этот механизм предназначен для получения свойств в исходном коде Java (например, https://stackoverflow.com/a/15356374/731040, https://developer.jboss.org/wiki/HowToConfigureJavaEEApplicationToApplyDifferentSettingsin >), но подумал, что это может работать и для внедрения переменных в web.xml. Увы, это не


person s.d    schedule 22.11.2017    source источник
comment
Думаю, эта ссылка вам поможет. stackoverflow.com/questions/12099008/   -  person Arvind Katte    schedule 22.11.2017
comment
Я не могу помочь вам с решением, но вы не ошиблись, думая, что можете фильтровать любые текстовые файлы, а не только исходный код.   -  person Gorazd Rebolj    schedule 22.11.2017
comment
Что произойдет, если вы используете ${project.version} в web.xml?   -  person Aleksandr M    schedule 22.11.2017
comment
@AleksandrM: отлично работает, если я создаю war, не работает для использования в Eclipse WTP. Я отредактирую вопрос, чтобы отразить это. Спасибо!   -  person s.d    schedule 23.11.2017