속성에 pom.xml 버전과 빌드 날짜를 입력하는 방법은 무엇입니까?

3431 단어 webappmavenjava
Java에서 webapp API를 작업하는 동안 앱 버전과 빌드 날짜를 프런트엔드로 보내야 합니다. 그러나 이것을 만드는 방법?

내 API 빌드는 maven을 기반으로 하므로 pom.xml 파일에서 버전을 가져오는 것에 대해 생각했습니다. 자, 이렇게 만들어 봅시다!

해결책! 거의...



리소스 필터링을 담당하는 pom.xml 파일 구성을 입력해야 합니다.

<build>
 <!-- clipped -->
   <resources>
     <resource>
       <directory>src/main/resources</directory>
       <filtering>true</filtering>
     </resource>
   </resources>
</build>


그리고 빌드 중에 대체될 app.properties 속성에서:

build.version=${pom.version}
build.date=${timestamp}


빌드 후 내 app.properties은 예상 데이터로 채워집니다.



이제 POM에서 버전에 액세스하고 Java 앱에서 마지막 빌드를 쉽게 할 수 있습니다!

그리고 ^H^H... 또 다른 문제가 있습니까?



모든 것이 원활하게 작동하며 pom.xml에서 버전과 빌드 날짜를 얻을 수 있습니다. 하지만... 이제 파비콘이 깨졌습니다! 뭐?!

프런트엔드는 백엔드와 함께 배포됩니다(Javalin static files feature 사용). 파일은 리소스 폴더에서 로드되었습니다.

리소스 필터링 플러그인이 favicon.ico(실제로 모든 .ico 파일)을 처리하고 잘못 저장하여 파일을 손상시킨 것으로 나타났습니다. 따라서 해당 파일을 필터링에서 제외해야 합니다!

마지막 해결책


pom.xml의 최종 구성은 아래 스니펫과 같습니다.

모든 src/main/resources 파일을 제외하고 .ico의 모든 파일을 처리합니다. 하지만 리소스 폴더에 .ico을 원하므로 추가해야 하지만 필터링(처리)하지 않고 추가해야 합니다.

<build>
 <!-- clipped -->
   <resources>
     <resource>
       <directory>src/main/resources</directory>
       <filtering>true</filtering>
       <excludes>
         <exclude>**/*.ico</exclude>
       </excludes>
     </resource>
     <resource>
       <directory>src/main/resources</directory>
       <filtering>false</filtering>
       <includes>
         <include>**/*.ico</include>
       </includes>
     </resource>
   </resources>
</build>


그게 다야 - 이제 모든 것이 정상입니다 ;-)

좋은 웹페이지 즐겨찾기