[JAVA] Maven lernen

1. Installation

1-1. Herunterladen

Laden Sie "apache-maven-3.6.2-bin.zip" von der folgenden Site herunter https://maven.apache.org/download.cgi

1-2. Einführung

Erweitern Sie den Pfad und übergeben Sie ihn an bin. Dieses Mal wurde es auf "D: \ apache-maven-3.6.2 \ bin" gesetzt.

1-3. Bestätigung

mvn -version

OK, wenn Sie mit beginnen. Dieses Mal wurde Folgendes angezeigt, sodass ich das JDK installiert habe.

The JAVA_HOME environment variable is not defined correctly
This environment variable is needed to run this program
NB: JAVA_HOME should point to a JDK not a JRE

Das heruntergeladene JDK ist "Amazon Corretto 8"

Apache Maven 3.6.2 (40f52333136460af0dc0d7232c0dc0bcf0d9e117; 2019-08-28T00:06:16+09:00)
Maven home: D:\apache-maven-3.6.2\bin\..
Java version: 1.8.0_232, vendor: Amazon.com Inc., runtime: C:\Program Files\Amazon Corretto\jdk1.8.0_232\jre
Default locale: ja_JP, platform encoding: MS932
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

Es hat sicher funktioniert.

2. Einstellungen

2-1. Maven-Einstellungen

Richten Sie ein lokales Repository ein. Öffnen Sie Maven \ conf \ settings.xml und legen Sie einen beliebigen Speicherort als lokales Repository fest, wie unten gezeigt.

settings.xml


<localRepository>D:/apache-maven-3.6.2/repository/</localRepository>

2-2. Eclipse-Einstellungen

  1. Öffnen Sie den Einstellungsbildschirm, indem Sie [Fenster] - [Einstellungen] auswählen.
  2. Wählen Sie [Maven] - [Benutzereinstellungen].
  3. Geben Sie die Datei settings.xml in den Benutzereinstellungen an.

3. Erstellen Sie ein Projekt

Erstellen Sie beispielsweise ein Adressbuch in der SWT-Anwendung. Die Anwendung besteht aus drei Gläsern. · Aussicht ・ Domain ・ Infrastruktur image.png

3-1. Erstellen eines übergeordneten Projekts

  1. [Neu] - [Maven-Projekt]
  2. Aktivieren Sie im Bildschirm "New Maven Project" die Option "Create a simple project" und klicken Sie auf "Next".

image.png

  1. Ändern Sie "Verpackung" in [pom], geben Sie die entsprechenden Werte für die Gruppen-ID und die Artefakt-ID ein und klicken Sie auf "Fertig".

image.png

-Gruppen-ID: Ein Name, der sich nicht mit allen Projekten überschneidet. Paketname (Domain + Projektname) -Artifact Id: Jar-Dateiname ohne Version

  1. Abgeschlossen. image.png

3-2. Erstellen eines untergeordneten Projekts

  1. Wählen Sie "Übergeordnetes Projekt" und klicken Sie mit der rechten Maustaste.
  2. [Neu] - [Andere]
  3. [Maveb] - [Maven-Modul]
  4. Geben Sie den "Modulnamen" ein. image.png
  5. Wenn die Erstellung abgeschlossen ist, sieht die Konfiguration wie folgt aus. image.png

4. Domain-Codierung

4-1. Java-Quelle zum Speichern von Adressen

Es hat eine Zeichenfolge mit dem Namen Name und Adresse 1, Adresse 2, Datum mit dem Namen Geburtstag und ein int für die Verwaltung.

Address.java



package ml.kerotori.app.domain;

import java.util.Date;

public class Address {

	private int no;			//Verwaltungsnummer
	private String Name;		//Name
	private String Address1;	//Adresse 1
	private String Address2;	//Adresse 2
	private Date Birthday;		//Geburtstag
	public int getNo() {
		return no;
	}
	public void setNo(int no) {
		this.no = no;
	}
	public String getName() {
		return Name;
	}
	public void setName(String name) {
		Name = name;
	}
	public String getAddress1() {
		return Address1;
	}
	public void setAddress1(String address1) {
		Address1 = address1;
	}
	public String getAddress2() {
		return Address2;
	}
	public void setAddress2(String address2) {
		Address2 = address2;
	}
	public Date getBirthday() {
		return Birthday;
	}
	public void setBirthday(Date birthday) {
		Birthday = birthday;
	}

}


4-2. Kompilieren

  1. Klicken Sie mit der rechten Maustaste auf das Projekt "Domain"
  2. [Ausführen] - [Maven installieren]
  3. Ich habe den folgenden Fehler erhalten.
[ERROR]Quelloption 5 wird derzeit nicht unterstützt. Bitte verwenden Sie 6 oder höher.
[ERROR]Zieloption 1.5 wird derzeit nicht unterstützt. 1.Bitte verwenden Sie 6 oder höher.
  1. Nehmen Sie die Java-Kompilierungseinstellungen in der Datei pom.xml des übergeordneten Projekts vor (übergeordnetes, nicht das "Domain" -Projekt). Fügen Sie Folgendes hinzu:

pom.xml


	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>${java.version}</source>
					<target>${java.version}</target>
				</configuration>
			</plugin>
		</plugins>

Das ganze Bild ist wie folgt.

image.png

  1. Die Kompilierung ist jetzt erfolgreich.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  3.125 s
[INFO] Finished at: 2019-11-03T22:29:41+09:00
[INFO] ------------------------------------------------------------------------

5. Infrastrukturcodierung

Speichern Sie das Adressbuch in einer XML-Datei, damit es gelesen werden kann.

5-1 Erstellen Sie Schnittstellen zum Speichern und Laden

Save.java


package ml.kerotori.app.infrastructure.core;

import java.beans.XMLEncoder;
import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;

public interface Save<T> {
	public static <T> boolean saveXml(String fileName, T obj) {
		//Objektdaten speichern
		try (XMLEncoder encoder = new XMLEncoder(
				new BufferedOutputStream(
						new FileOutputStream(fileName)))) {
			encoder.writeObject(obj);
		} catch (FileNotFoundException e) {
			return false;
		}catch(Exception e) {
			return false;
		}
		return true;
	}
}

Load.java


package ml.kerotori.app.infrastructure.core;

import java.beans.XMLDecoder;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;

public interface Load<T> {
	@SuppressWarnings("unchecked")
	public static <T>  T loadXml(String fileName) {

		try (XMLDecoder decoder = new XMLDecoder(
				new BufferedInputStream(
						new FileInputStream(fileName)))) {
			return (T) decoder.readObject();
		} catch (FileNotFoundException e) {
			return null;
		}catch(Exception e) {
			return null;
		}
	}
}

5-2. Adress-Dao erstellen

AddressDao.java


package ml.kerotori.app.infrastructure.dao;

import java.io.Serializable;

import ml.kerotori.app.domain.Address;
import ml.kerotori.app.infrastructure.core.Load;
import ml.kerotori.app.infrastructure.core.Save;

public class AddressDao implements Serializable,Save<Address>, Load<Address> {

	private Address address;

	public Address getAddress() {
		return address;
	}

	public void setAddress(Address address) {
		this.address = address;
	}

	public static Address Load(int no) {
		return Load.loadXml(no + ".xml");
	}

	public boolean Save() {
		return Save.saveXml(this.address.getNo() + ".xml", address);
	}
}

5-2. Verweis auf Domain

Fügen Sie der Infrastruktur pom.xml Folgendes hinzu.

xml.pom.xml


   <dependencies>
           <dependency>
            <groupId>ml.kerotori.app</groupId>
            <artifactId>Domain</artifactId>
            <version>${project.version}</version>
        </dependency>
   </dependencies>

5-3 Testcode erstellen

AddressTest.java


package ml.kerotori.app.infrastructure.dao;

import static org.junit.jupiter.api.Assertions.*;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.junit.jupiter.api.Test;

import ml.kerotori.app.domain.Address;

class AddressDaoTest {

	@Test
	void SaveTest1() {
		Address address = new Address();
		address.setNo(1);
		address.setName("Ichiro Sato");
		address.setAddress1("Hokkaido");
		address.setAddress2("Sapporo");
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
		Date date = null;
		try {
			date = sdf.parse("1990/10/11");
		} catch (ParseException e) {
			//TODO automatisch generierter Fangblock
			e.printStackTrace();
		}
		address.setBirthday(date);
		AddressDao dao = new AddressDao();
		dao.setAddress(address);
		assertTrue(dao.Save());


	}

	@Test
	void LoadTest1() {
		Address address = AddressDao.Load(1);
		assertEquals("Ichiro Sato", address.getName());

	}
}

5-4. Testen Sie pom.xml

pom.xml(Übergeordnetes Projekt)


			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>2.7.2</version>
				<configuration>
					<workingDirectory>${project.basedir}/src/test/resources</workingDirectory>
				</configuration>
			</plugin>


			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>2.19.1</version>
				<dependencies>
					<dependency>
						<groupId>org.junit.platform</groupId>
						<artifactId>junit-platform-surefire-provider</artifactId>
						<version>1.1.0</version>
					</dependency>
					<dependency>
						<groupId>org.junit.jupiter</groupId>
						<artifactId>junit-jupiter-engine</artifactId>
						<version>5.1.0</version>
					</dependency>
				</dependencies>
			</plugin>

Wenn der Test fehlschlägt, kann das Ausführen von Maven-Update Project hilfreich sein.

6. Codierung anzeigen

6-1. Vorbereiten der Erstellung von AddressView

  1. Klicken Sie mit der rechten Maustaste auf das Projekt "Ansicht".
  2. [Neu] - [Andere]
  3. [WindowsBuilder] - [SWT Designer] - [SWT] - [Anwendungsfenster]

6-2. Memo

6-2-1. Über SWT

In Bezug auf SWT für Windows ist die neue Version (4.13) für 64-Bit und funktioniert nicht in 32-Bit-Umgebungen. https://download.eclipse.org/eclipse/downloads/drops4/R-4.13-201909161045/ Die neueste 32-Bit-Version ist 3.8.2 unten? https://archive.eclipse.org/eclipse/downloads/drops/R-3.8.2-201301310800/

Geben Sie im Eclipse Marketplace bei der Suche und Installation "WindowBuilder" ein.

6-2-2. Ziel herunterladen

https://repo1.maven.org/maven2/org/eclipse/platform/org.eclipse.swt.win32.win32.x86/3.108.0/

6-2-3. Löschen des lokalen Repositorys von Maven

Ich musste den Ordner nur physisch löschen.

6-2-4. SWT-Lösung

Ich gab auf und beschloss, es selbst herunterzuladen und manuell im Repository zu registrieren.

6-3 Referenzeinstellungen

Stellen Sie Folgendes in pom.xml von View ein.

pom.xml


	<profiles>
		<profile>
			<id>windows_x86</id>
			<activation>
				<os>
					<family>Windows</family>
					<arch>x86</arch>
				</os>
			</activation>
			<dependencies>
				<dependency>
					<groupId>swt</groupId>
					<artifactId>swt-win32-x86</artifactId>
					<version>3.8.2</version>
					<type>jar</type>
				</dependency>
			</dependencies>
		</profile>
		<profile>
			<id>windows-x86_64</id>
			<activation>
				<os>
					<family>Windows</family>
					<arch>amd64</arch>
				</os>
			</activation>
			<dependencies>
				<dependency>
					<groupId>swt</groupId>
					<artifactId>swt-win32-x86_64</artifactId>
					<version>3.8.2</version>
					<type>jar</type>
				</dependency>
			</dependencies>
		</profile>
	</profiles>

Laden Sie "swt-3.8.2-win32-win32-x86.zip" und "swt-3.8.2-win32-win32-x86_64.zip" herunter und entpacken Sie sie, um "swt.jar" zu finden. Ändern Sie den Namen wie folgt und speichern Sie ihn im Ordner "D: \ swt". swt-3.8.2-win32-x86.jar swt-3.8.2-win32-x86_64.jar

Registrieren Sie sich manuell mit dem folgenden Befehl im Repository.

SET REPO_URL=file:D:/apache-maven-3.6.2/repository/
mvn deploy:deploy-file -DrepositoryId=ml.kerotori.app -Durl=%REPO_URL% -Dfile=d:\swt\swt-3.8.2-win32-x86.jar -DgroupId=swt -DartifactId=swt-win32-x86 -Dversion=3.8.2 -Dpackaging=jar
mvn deploy:deploy-file -DrepositoryId=ml.kerotori.app -Durl=%REPO_URL% -Dfile=d:\swt\swt-3.8.2-win32-x86_64.jar -DgroupId=swt -DartifactId=swt-win32-x86_64 -Dversion=3.8.2 -Dpackaging=jar

Der Fehler ist aus irgendeinem Grund nicht verschwunden, aber als ich den Fehler behoben und ausgeführt habe, hat er normal funktioniert. image.png

6-4. Adressansicht erstellen

Derzeit nur normaler Betrieb. Die Überprüfung des Eingabewerts entfällt.

AddressView.java


package ml.kerotori.app.view;

import java.util.Date;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;

import ml.kerotori.app.domain.Address;
import ml.kerotori.app.infrastructure.dao.AddressDao;

public class AddressView {

	protected Shell shell;
	private Text txtNo;
	private Text txtName;
	private Text txtAddress1;
	private Text txtAddress2;
	private Text txtBirtyday;

	/**
	 * Launch the application.
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			AddressView window = new AddressView();
			window.open();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * Open the window.
	 */
	public void open() {
		Display display = Display.getDefault();
		createContents();
		shell.open();
		shell.layout();
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch()) {
				display.sleep();
			}
		}
	}

	/**
	 * Create contents of the window.
	 */
	protected void createContents() {
		shell = new Shell();
		shell.setSize(450, 300);
		shell.setText("SWT Application");
		shell.setLayout(new GridLayout(2, false));

		Label lblNo = new Label(shell, SWT.NONE);
		lblNo.setText("No");
		txtNo = new Text(shell, SWT.BORDER);
		txtNo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));

		Label label = new Label(shell, SWT.NONE);
		label.setText("Name");
		txtName = new Text(shell, SWT.BORDER);
		txtName.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));

		Label label_1 = new Label(shell, SWT.NONE);
		label_1.setText("Adresse 1");
		txtAddress1 = new Text(shell, SWT.BORDER);
		txtAddress1.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));

		Label label_2 = new Label(shell, SWT.NONE);
		label_2.setText("Adresse 2");
		txtAddress2 = new Text(shell, SWT.BORDER);
		txtAddress2.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));

		Label label_3 = new Label(shell, SWT.NONE);
		label_3.setText("Geburtstag");
		txtBirtyday = new Text(shell, SWT.BORDER);
		txtBirtyday.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));

		Button btnSave = new Button(shell, SWT.NONE);
		btnSave.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent arg0) {
				AddressDao dao = new AddressDao();
				Address address = new Address();
				address.setNo(Integer.parseInt(txtNo.getText()));
				address.setName(txtName.getText());
				address.setAddress1(txtAddress1.getText());
				address.setAddress2(txtAddress2.getText());
				address.setBirthday(new Date(txtBirtyday.getText()));
				dao.setAddress(address);
				if(dao.Save()) {
					MessageBox msgBox = new MessageBox(shell, SWT.ICON_INFORMATION | SWT.OK);
					msgBox.setText("MessageBox");
					msgBox.setMessage("Erfolgreiche Registrierung");
					int reply = msgBox.open();
				}else {
					MessageBox msgBox = new MessageBox(shell, SWT.ICON_ERROR | SWT.OK);
					msgBox.setText("MessageBox");
					msgBox.setMessage("Registrierungsfehler");
					int reply = msgBox.open();
				}

			}
		});
		btnSave.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 2, 1));
		btnSave.setText("Anmeldung");

	}

}

6-5 Verweis auf Domäne und Infrastruktur

pom.xml


<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>ml.kerotori.app</groupId>
		<artifactId>SWTsample</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</parent>
	<artifactId>View</artifactId>

	<profiles>
		<profile>
			<id>windows_x86</id>
			<activation>
				<os>
					<family>Windows</family>
					<arch>x86</arch>
				</os>
			</activation>
			<dependencies>
				<dependency>
					<groupId>swt</groupId>
					<artifactId>swt-win32-x86</artifactId>
					<version>3.8.2</version>
					<type>jar</type>
				</dependency>
			</dependencies>
		</profile>
		<profile>
			<id>windows-x86_64</id>
			<activation>
				<os>
					<family>Windows</family>
					<arch>amd64</arch>
				</os>
			</activation>
			<dependencies>
				<dependency>
					<groupId>swt</groupId>
					<artifactId>swt-win32-x86_64</artifactId>
					<version>3.8.2</version>
					<type>jar</type>
				</dependency>
			</dependencies>
		</profile>
	</profiles>

	<dependencies>
		<dependency>
			<groupId>ml.kerotori.app</groupId>
			<artifactId>Domain</artifactId>
			<version>${project.version}</version>
		</dependency>
		<dependency>
			<groupId>ml.kerotori.app</groupId>
			<artifactId>Infrastructure</artifactId>
			<version>${project.version}</version>
		</dependency>
	</dependencies>
</project>

7. Ausführungsmodul

Wenn Sie pom.xml des übergeordneten Projekts wie folgt erstellen, wird in View ein Modul erstellt.

pom.xml


<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>ml.kerotori.app</groupId>
	<artifactId>SWTsample</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>pom</packaging>
	<modules>
		<module>View</module>
		<module>Infrastructure</module>
		<module>Domain</module>
	</modules>
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>${java.version}</source>
					<target>${java.version}</target>
				</configuration>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-assembly-plugin</artifactId>
				<version>3.1.1</version>
				<configuration>
					<finalName>SWTsample</finalName>
					<appendAssemblyId>false</appendAssemblyId>
					<descriptorRefs>
						<descriptorRef>jar-with-dependencies</descriptorRef>
					</descriptorRefs>
					<archive>
						<manifest>
							<mainClass>ml.kerotori.app.view.AddressView</mainClass>
						</manifest>
					</archive>
				</configuration>
				<executions>
					<execution>
						<id>make-assembly</id>
						<phase>package</phase>
						<goals>
							<goal>single</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-dependency-plugin</artifactId>
				<version>3.1.1</version>
				<executions>
					<execution>
						<id>copy-dependencies</id>
						<phase>package</phase>
						<goals>
							<goal>copy-dependencies</goal>
						</goals>
						<configuration>
							<!-- configure the plugin here -->
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>


</project>

8. Commit zu GitHub

Stellen Sie mit Bezug auf das Folgende ein. https://qiita.com/cotrpepe/items/7cafaacb538425a78f1f

Als Referenz. https://github.com/kero1976/SWTsample

Recommended Posts

Maven lernen
Java lernen (0)
Rubin lernen 4
Rubin lernen 5
Servlet lernen
Ruby lernen 3
Lernleistung ~ 11/3 ~
Ruby lernen 2
Rubin lernen 6
Lernergebnisse
[Maven] Über Maven
Rubin lernen 1
Maven-Projekt erstellen
Für JAVA-Lernen (2018-03-16-01)
Versuchen Sie es mit Maven
Java-Lerntag 5
Java, Maven Memo
Rails Lerntag 3
Rails Lerntag 4
Schienen lernen Tag 2
Maven Zieltypen
Maven3-Fehlerprotokoll
Schienen Lerntag 1
Java-Lerntag 2
Java-Lerntag 1