mvn dependency:build-classpath
Anzeigen aller benutzten und ungenutzen Abhängigkeiten mit Maven.
mvn dependency:analyze
Erzeugt z.B.:
...
[INFO] --- maven-dependency-plugin:2.0:analyze (default-cli) @ twsendsms ---
[WARNING] Used undeclared dependencies found:
[WARNING] com.google.gdata:gdata-core-1.0:jar:1.41.5:compile
[WARNING] com.google.gdata:gdata-contacts-3.0:jar:1.41.5:compile
[WARNING] com.google.gdata:gdata-client-1.0:jar:1.41.5:compile
[WARNING] Unused declared dependencies found:
[WARNING] junit:junit:jar:sources:4.7:compile
[WARNING] junit:junit:jar:4.7:test
[WARNING] google-data:google-data:jar:0.0.1:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
Wie können alle transitiven Abhängigkeiten eines Projektes mit Maven angezeigt werden?
mvn dependency:tree
Ausgabe z.B.:
[INFO] Building twsendsms 0.1.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.0:tree (default-cli) @ twsendsms ---
[INFO] de.wenzlaff.twsendsms:twsendsms:jar:0.1.0
[INFO] +- junit:junit:jar:4.7:test
[INFO] +- commons-codec:commons-codec:jar:1.4:compile
[INFO] +- telekom-sdk-java:java-sdk:jar:3.1.10:compile
[INFO] +- junit:junit:jar:sources:4.7:compile
[INFO] +- log4j:log4j:jar:1.2.4:compile
[INFO] \- google-data:google-data:jar:0.0.1:compile
[INFO] +- com.google.gdata:gdata-contacts-3.0:jar:1.41.5:compile
[INFO] | \- com.google.gdata:gdata-client-1.0:jar:1.41.5:compile
[INFO] \- com.google.gdata:gdata-core-1.0:jar:1.41.5:compile
[INFO] +- com.google.collections:google-collections:jar:1.0-rc1:compile
[INFO] \- com.google.code.findbugs:jsr305:jar:1.3.9:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
Wie kann Maven 3 auf Mac OS X 10.7.2 Lion installiert werden?
Erst Macports installieren und dann mit
sudo port install maven3
die Installation starten. Dann wie im Installationsfenster beschrieben, maven 3 als default setzen.
Wichtig ist noch, das im ~/.m2/settings.xml das Lokale Repository angegeben wird. Dabei darf das Lokale Verzeichnist nicht
mit ~ gesetzt werden, sondern es muss der komplette Pfad angegeben werden, sonst laufen die Eclipse Plugins nicht richtig.
In
~/.bash_profile
noch:
export M2_HOME=/opt/local/share/java/maven3
export PATH=${M2_HOME}/bin:${PATH}
setzen.
Wie setzt man die JAVA_HOME Variable in Mac OS X Lion 10.7.2
Die Terminal App starten und mit einem Editor die
~/.bash_profile
(evl. kontrollieren .profile, .bashrc, /etc/profile )
Datei um den folgenden Eintrag ergänzen:
export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
Nach dem restart der Terminal App kann es mit:
echo $JAVA_HOME
getestet werden ob der Eintrag richtig gesetzt wurde.
Auch muss jetzt in jedem Verzeichnis mit:
java -version
die Java Version ausgegeben werden.
Java Insel
Jetzt 146 Seite Online von der Java Insel mit den Kap. über Java 7 News und Reflections. Und das Buch in der Ver. 10 unter.
Wie kann ein Schlaganfall erkannt werden?
IPhone FTP App.
Wer kennt eine gute FTP Client App. fürs IPhone bzw. IPad?
WPtouch installiert für die opt. fürs IPhone ua.
Soeben WPtouch installiert.
Jetzt ist der Blog optimiert für zugriffe von iPhone, iPod touch, Android, Palm Pre, Samsung touch und BlackBerry Storm/Torch Mobile-Devices.
Also blog.wenzlaff.de ist jetzt optimiert für Mobile-Devices. Man kann auch unten auf der Seite zur orginal Ansicht wechseln. Cool. So sieht die Seite auf meinem IPhone aus:

Was haltet ihr davon?
JDK 7 „Diamanten sind für immer“
In Java 7 gibt es jetzt den „diamond Operator“. Nun müssen bei generics keine Typen doppelt deklariert werden.
Hier ein Beispiel vorher und nachher:
List<Integer> liste = new ArrayList<Integer>(); // vor JRE 7
List<Integer> diamantListe = new ArrayList<>(); // ab JRE 7, ja Diamonds are forever
Java 7 ist DA!
So, jetzt ist Java 7 da. Was braucht man zum ausprobieren?
Eine Eclipse Version die Java 7 unterstützt. Das geht noch nicht mit Helios. Deshalb einen „Nightly Build“ herunterladen.
Dann über Update neue Software über diese URL den JDK 7 patch herunterladen.
Was dann noch fehlt ist das JDK 7 von Oracle.
In den Projekt Einstellungen unter Java Compiler die 1.7 auswählen und nun der erste Test.
In Java 1.7 sind jetzt Unterstriche (_) in Literalen möglich, um besser zu gliedern z.B.
1 2 3 4 5 6 7 8 9 10 11 12 |
public class TestJava7 { private static long telefonNummer_1 = 11_22_33_44L; private static double telefonNummer_2 = 11_22.3_3d; public static void main(String[] args) { System.out.println("Telefonnummer 1: " + telefonNummer_1); System.out.println("Telefonnummer 2: " + telefonNummer_2); } } |
Das Ergebnis:
Telefonnummer 1: 11223344
Telefonnummer 2: 1122.33
Weitere Neuerungen mit Beispielen wie „String in switch“ kommen hier dann demnächst.
Eclipse 3.7 da!
Ab jetzt gibt es eine neue Eclipse 3.7 Version genannt Indigo. Mal sehen was es neues gibt. Download über die Eclipse Seite.
Habe das Java Package geladen, und das erste Projekt ins Git Repo geschoben.
Die Home Variable war nicht gesetzt auf das User Verzeichnis, dann lief es.
Hier die EGit-Anleitung.
Maven, da musste ich in den Settings auch die setting.xml setzen, und im Pom einige Goals auskommentiern, da sie mit der neuen Version nicht zusammen passen.
Das Explorer-Plugin läuft auch unter Indigo, super.
Indigo scheint auch schneller zu laufen 🙂
Bedingungen einkapseln
Da boolesche Logik auf den ersten Blick schwer lesbar und zu verstehen ist,
können (sollten) Funktionen extrahiert werden um eine bessere Lesbarkeit zu erhalten.
Z.B.
if (sollGeloeschtWerden(timer)){…
ist besser als:
if (timer.isGueltige() && !timer.isAktuell() || timer > heute){…
Keine negativen Bedingungen verwenden
In if Abfragen verwendete Bedingungen immer positiv formulieren. Das ist besser zu verstehen.
Z.B.
if ( speicher.isLeer() )
ist besser als
if (!speicher.isNichtLeer() )
da pos. formuliert.
Also müsste die Überschrift „Positive Bedingungen verwenden“ heißen. Das wird dann mal später mal geändert. So heißt es immer, und bleibt für immer 😉
Cast von Integraler division zu double
Was wird hier ausgegeben? Also was ist der Inhalt der erg Variable?
int a = 5;
int b = 10;
double erg = a / b;
System.out.println(erg);
a) 0.5
b) 0.0
c) null
d) java.lang.ArithmeticException
„Cast von Integraler division zu double“ weiterlesen
Java Müll, Abfall, Kehricht oder Mist
Halte die Quelldateien sauber und frei von Müll, der da wäre …
- Default-Konstruktor ohne Implementierung
- Nicht benötigte Variablen
- Nicht aufgerufene Funktionen
- Kommentare die keine Informationen hinzufügen
Kennst Du noch weiteren trash?
JUnit mit ein assert pro Test
Die Regel, nur eine assert-Anweisung pro Testmethode zu verwenden, mag drakonisch klingen erleichtert aber die Übersicht (siehe Blog von Dave Astels).
Obwohl ich auch keine Angst habe von dieser Regel abzuweichen.
Was ist Eure Meinung? Wer testet ist feige?
IPhone
Cool, jetzt kann ich auch übers IPhone von überall posten 🙂 Und bearbeiten geht auch 😉 Und noch ein paar Plugins ergänzt ua. den Tweet Button.
Blog auf neue WordPress Version umgestellt
Dieser Blog hat nun die aktuelle WordPress Version mit einer MySQL DB.
Der Blog ist jetzt nur noch über diese Subdomain http://blog.wenzlaff.de zu erreichen.
Redundanter Kontext in Klassen
Es ist keine Gute Idee, wenn eine Anwendung z.B. „Welt Timer“ heißt,
jede Klasse mit dem Präfix „WT“ zu beginnen.
-In der IDE würde dann, wenn man „W“ und „Completion Key“ eintippt, eine lange Liste aller Namen erscheinen.
-Es währen immer 2 Zeichen redundanter und irrelevanter Code.
-Klassen sollen möglichst kurz sein, solange sie klar sind.