/[schmitzm]/trunk/src/skrueger/versionnumber/ReleaseUtil.java
ViewVC logotype

Contents of /trunk/src/skrueger/versionnumber/ReleaseUtil.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 800 - (show annotations)
Wed Apr 14 16:33:30 2010 UTC (14 years, 10 months ago) by alfonx
File MIME type: text/plain
File size: 5359 byte(s)
Neue Hilfsklasse ReleaseUtil bietet zwei nette Funktionen 
1. LGPL und GPL Lizentexte auf Logger ausgeben
2. Version-String aus /release.proeprties Dateien erstellen. Weiterhin ist im JavaDoc beschrieben, wie man das mit Maven sauber einrichtet.
1 package skrueger.versionnumber;
2
3 import java.io.InputStream;
4 import java.net.URL;
5 import java.util.Properties;
6
7 import org.apache.log4j.Logger;
8
9 /**
10 * Wer sein Maven Projekt wie folgt konfiguriert (oder ähnlich) kann die Maven +
11 * SVN revision nummer als Programmversion verwenden. <br/>
12 *
13 * 1. pom.xml anpassen: <code>
14 <plugin>
15 <groupId>org.codehaus.mojo</groupId>
16 <artifactId>buildnumber-maven-plugin</artifactId>
17 <version>1.0-beta-4</version>
18 <executions>
19 <execution>
20 <id>buildnumber in phase initialize</id>
21 <phase>initialize</phase>
22 <goals>
23 <goal>create</goal>
24 </goals>
25 </execution>
26 </executions>
27 <configuration>
28
29 <doCheck>false</doCheck>
30 <doUpdate>false</doUpdate>
31 <providerImplementations>
32 <svn>javasvn</svn>
33 </providerImplementations>
34 </configuration>
35 </plugin>
36 </code><br/>
37 * 2. Datei src/main/resources.properties mit foglenden Inhalt anlegen:<code>
38 #Properties describing this release/build
39 version=${project.version}
40 build=${buildNumber}
41 </code><br/>
42 * 3. Filtering für die src/main/resources.properties - Datei einschalten:<code>
43 <resources>
44 <resource>
45 <filtering>true</filtering>
46 <directory>src/main/resources</directory>
47 <includes><include>release.properties</include></includes>
48 </resource>
49 </resources>
50
51 </code>
52 */
53 public class ReleaseUtil {
54
55 /**
56 * @return The major.minor version, build number and build date
57 */
58 public static String getVersionInfo(Class<?> clazz) {
59 /**
60 * Release properties einlesen
61 */
62 try {
63 return "v" + getVersion(clazz) + "-r" + getVersionBuild(clazz);
64 } catch (final Exception e) {
65 return "unknown version";
66 }
67 }
68
69 /**
70 * Return the major part of the software version of GP/AV/AS.
71 *
72 * @throws Exception
73 * if release.properties not found
74 */
75 public static int getVersionBuild(Class<?> clazz) {
76 try {
77 final URL releasePropsURL = clazz
78 .getResource("/release.properties");
79
80 final Properties releaseProps = new Properties();
81 final InputStream openStream = releasePropsURL.openStream();
82 try {
83 releaseProps.load(openStream);
84 } finally {
85 openStream.close();
86 }
87 final String str = releaseProps.getProperty("build", "0");
88
89 if (str.equals("${buildNumber}")) {
90 // We are in development or Maven didn't filter the properties
91 // while building.
92 return 0;
93 }
94
95 return Integer.parseInt(str);
96 } catch (final Exception e) {
97 throw new RuntimeException(
98 "/release.properties could not be read from "
99 + clazz.getSimpleName(), e);
100 }
101
102 }
103
104 /**
105 * Return the major part of the software version of GP/AV/AS.
106 *
107 * @throws Exception
108 * if release.properties not found
109 */
110 public static String getVersion(Class<?> clazz) {
111 try {
112
113 final URL releasePropsURL = clazz
114 .getResource("/release.properties");
115
116 final Properties releaseProps = new Properties();
117 final InputStream openStream = releasePropsURL.openStream();
118 try {
119 releaseProps.load(openStream);
120 } finally {
121 openStream.close();
122 }
123
124 final String defaultVer = "DEV";
125 final String versionProperty = releaseProps.getProperty("version",
126 defaultVer);
127 if (versionProperty.equals("${project.version}"))
128 return defaultVer;
129 return versionProperty;
130 } catch (final Exception e) {
131 throw new RuntimeException(
132 "/release.properties could not be read from "
133 + clazz.getSimpleName(), e);
134 }
135
136 }
137
138 public static int getVersionMaj(Class<?> clazz) {
139 try {
140 return Integer.parseInt(getVersion(clazz).split("\\.")[0]);
141 } catch (final Exception e) {
142 return 0;
143 }
144 }
145
146 public static int getVersionMin(Class<?> clazz) {
147 try {
148 return Integer.parseInt(getVersion(clazz).split("\\.")[1]);
149 } catch (final Exception e) {
150 return 0;
151 }
152
153 }
154
155 /**
156 * Print the GPL disclaimer to the given {@link Logger} as on INFO level.
157 */
158 public static void logGPLCopyright(final Logger logger) {
159
160 logger
161 .info("\nThis program is free software: you can redistribute it and/or modify\n"
162 + "it under the terms of the GNU General Public License as published by\n"
163 + "the Free Software Foundation, either version 3 of the License, or\n"
164 + "(at your option) any later version.\n"
165 + "\n"
166 + "This program is distributed in the hope that it will be useful,\n"
167 + "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
168 + "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
169 + "GNU General Public License for more details.\n");
170 }
171
172 /**
173 * Print the LGPL disclaimer to the given {@link Logger} as on INFO level.
174 */
175 public static void logLGPLCopyright(final Logger logger) {
176
177 logger
178 .info("\nThis program is free software: you can redistribute it and/or modify\n"
179 + "it under the terms of the GNU Lesser General Public License as published by\n"
180 + "the Free Software Foundation, either version 3 of the License, or\n"
181 + "(at your option) any later version.\n"
182 + "\n"
183 + "This program is distributed in the hope that it will be useful,\n"
184 + "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
185 + "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
186 + "GNU Lesser General Public License for more details.\n");
187
188 }
189 }

Properties

Name Value
svn:eol-style native
svn:keywords Id URL
svn:mime-type text/plain

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26