Maven Wie die Maven Project version in JSP page verwenden?

PFEdi

Mitglied
Hi all,

wie kann ich in einem Maven Projekt in einer JSP page die maven versions nummer verwenden?

Ich habe hier eine JSP page die ein JNLP generiert in dem die versions Nummer des Projektes stehlen soll.

[CODE lang="java" title="JSP Page" highlight="74"]<%@ page session="false" %>
<%@ page contentType="application/x-java-jnlp-file" %>
<%@ page import="java.io.UnsupportedEncodingException" %>
<%@ page import="java.net.URLDecoder" %>
<%@ page import="java.util.Properties" %>
<%@ page import="java.io.FileInputStream" %>
<%@ page import="java.io.IOException" %>
<%@ page import="java.io.FileNotFoundException" %>

<%!/**
/**
* The default codebase for the jnlp file.
*/
public static final String DEFAULT_URL = "codebase=\"http://app-server-1:8888/app-name\"";
public static final String APP_CONTEXT = "/app-name/";
public static final String APP_NAME = "AppName";
public static final String DEFAULT_HOST = "http://app-server-1:8080";

private String getURL(String url) {
String defaultUrl = DEFAULT_URL;
if (null != url) {
try {
String encodedURL = URLDecoder.decode(url, "UTF-8");
defaultUrl = "codebase=\"" + encodedURL + APP_CONTEXT + "\" ";
} catch (UnsupportedEncodingException e) {
System.out.println("error during url encoding " + e);
}
}
return defaultUrl;
}

private String getHost(String url) {
String docBase = DEFAULT_HOST;
if (null != url) {
try {
String encodedURL = URLDecoder.decode(url, "UTF-8");
docBase = encodedURL;
} catch (UnsupportedEncodingException e) {
System.out.println("error during url encoding " + e);
}
}
return docBase;
}%>

<%
String url = request.getRequestURL().substring(0, request.getRequestURL().indexOf(request.getRequestURI()));
String userName = request.getParameter("USERNAME");
String timeStamp = request.getParameter("timestamp");
%>

<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0+" <%=getURL(url)%> >
<information>
<title><%=APP_NAME%></title>
</information>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.6+" java-vm-args="-Xmx2048m"/>

<property name="javaws.log4j.debug" value="false"/>
<property name="javaws.log4j.configuration" value="log4j.properties"/>
<property name="javaws.user.language" value="en"/>
<property name="javaws.user.region" value="US"/>

<property name="sun.java2d.d3d" value="false"/>
<property name="sun.awt.noerasebackground" value="true"/>

<jar href="lib/commons-cli-1.4.jar"/>
<jar href="lib/commons-configuration2-2.7.jar"/>
<jar href="lib/commons-lang3-3.9.jar"/>
<jar href="lib/swingx-all-1.6.5-1.jar"/>
<jar href="lib/app-client-1.3-SNAPSHOT.jar" main="true"/>
</resources>
<application-desc main-class="com.example.client.Client">
<argument>-appname</argument>
<argument><%=APP_NAME%></argument>
<argument>-username</argument>
<argument><%=userName%></argument>
<argument>-host</argument>
<argument><%=getHost(url)%></argument>
<argument>-timeStamp</argument>
<argument><%=timeStamp%></argument>
</application-desc>
</jnlp>
[/CODE]


in Zeile 74 gibt es eben die *app-client-1.3-SNAPSHOT.jar* und die "1.3-SNAPSHOT" sollte direkt die version des maven Projekt sein.

Wie kann man das umsetzten?
Sonst muss ich bei der änderung der MVN versions nummer immer auch in das JSP und da auch die version ändern ... und das vergisst man manchmal.

(Der code is bisschen vereinfacht)
 
Eine Möglichkeit, die man nutzen könnte:
Die Information wird in eine Resource Datei geschrieben. Diese könnte man dann im Build "filtern" und so die Informationen eintragen.

Das wäre dann etwas wie:
Java:
<resources>
    <resource>
        <filtering>true</filtering>
        <directory>src/main/resources</directory>
        <includes>
            <include>application.properties</include>
        </includes>
    </resource>
</resources>

Und in der Datei dann sowas wie:
Java:
application.name=@project.artifactId@
build.version=@project.version@
build.timestamp=@timestamp@

Das wäre dann immer noch zur Laufzeit auszulesen, aber es wäre wenigstens im Build entsprechend aufgebaut.

Das ist auch etwas, das nicht auf meinen Mist geht, sondern was Spring Boot so als Weg vorsieht: https://docs.spring.io/spring-boot/...howto.html#howto.properties-and-configuration
 

Zurück
Oben