2018년 3월 19일 월요일

maven


Maven

https://maven.apache.org/

설치

  1. JDK 설치
  2. 압축 파일 download
  3. 압축 해제
  4. PATH 에 bin 폴더 추가

프로젝트 생성


$ mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false


  • Architecture type 표 (-DarchetypeArtifactId 값)
  • groupId 및 artifactId 는 본인이 지정 
    • groupId 는 package 
      • 기본 package 생성에 사용됨
    • artifactId 는 project 이름
      • 폴더 이름 및 packaging 결과물 압축 파일명으로 사용됨

빌드


$ mvn compile
  • 의존성 해결 및 target/classes 폴더에 빌드 결과물 생성
  • src/ 폴더에 소스 빌드

테스트


$ mvn test
  • src/test 폴더에 소스 빌드 및 테스트 수행

Packaging


$ mvn package
  • 필요시 빌드 하고 target 폴더에 배포용 압축 파일 생성

의존성 목록 검색


아래 사이트에서 가용 라이브러리 정보 확인

https://mvnrepository.com/

  1. 라이브러리 검색
  2. 버전 클릭
  3. maven dependency xml 복사하여 pom.xml 에 붙여 넣기

Java version


maven-compiler-plugin



    <project>
      ...
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-compiler-plugin</artifactId>
              <version>3.8.0</version>
              <configuration>
                <!-- put your configurations here -->
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
      ...
    </project>


예) java 1.8 설정

    <project>
      ...
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-compiler-plugin</artifactId>
              <version>3.8.0</version>
              <configuration>
                <source>1.8</source>
                <target>1.8</target>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
      ...
    </project>


copy dependencies


Dependency 라이브러리들을 복사하여 실행할 때 class path 에 추가

예) pom.xml 에 plugin 추가

<project>
...
  <build>
    <pluginManagement>
      <plugins>
        <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>
                <outputDirectory>${project.build.directory}/alternateLocation</outputDirectory>
                <overWriteReleases>false</overWriteReleases>
                <overWriteSnapshots>false</overWriteSnapshots>
                <overWriteIfNewer>true</overWriteIfNewer>
              </configuration>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>


dependency:copy-dependencies target 수행을 통해 의존성 라이브러리들이 target/dependency 에 복사

$ mvn clean dependency:copy-dependencies package

실행 시 -cp (class path) 에 라이브러리 경로를 추가

$ java -cp target/$app-name.jar:target/dependency/$dependency1.jar com.app.Main


2014년 2월 27일 목요일

DatagramPacket 재사용

참고: http://www.coderanch.com/t/206099/sockets/java/DatagramPacket-getLength-refresh

아래와 같이 DatagramPacket 을 한번 생성하고
DatagramPacket pack = new DatagramPacket(data, data.length);

매번 pack.setLength(data.length); 로 길이를 초기화해주면 다음에도 pack 을 사용할 수 있다.

2013년 4월 13일 토요일

Enumeration (interface)

참고 : http://docs.oracle.com/javase/6/docs/api/java/util/Enumeration.html

Enumeration (interface)
- 사전적 의미로 열거를 말함

Enumeration 인터페이스를 구현한 클래스들은 모두 아래 두 함수 구현체를 갖게 됨.
 - boolean hasMoreElements()
 - E nextElement()

hasMoreElements() 함수로 다음 읽을 항목이 더 있는지 알 수 있다.
nextElement() 함수로 다음 항목을 얻을 수 있다.

사용예:
package com.enumeration;

import java.util.Enumeration;
import java.util.Hashtable;

public class EnumerationTest {
 public static void main(String[] args) throws Exception {
  Hashtable table = new Hashtable();
  table.put("name", "John");
  table.put("age", "24");
  table.put("weight", "60kg");

  Enumeration keys = table.keys();
  while (keys.hasMoreElements()) {
   String key = keys.nextElement();
   System.out.printf("%s : %s\n", key, table.get(key));
  }
 }
}