2018년 3월 19일 월요일

ivy

ivy 


http://ant.apache.org/ivy/

  • 의존성 해결
  • ant 필요

sample


https://github.com/bjtj/tjsamples/tree/master/java/ivy


설치


  1. 압축 파일 download
  2. 압축 해제
  3. jar 파일을 build.xml 파일에 위치


build.xml 파일


ivy 설정 target 과 resolve target 추가

<project name="my-project" default="resolve" xmlns:ivy="antlib:org.apache.ivy.ant">
    <target name="init-ivy">
        <taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant">
            <classpath>
                <pathelement location="ivy-2.4.0.jar" />
            </classpath>
        </taskdef>
    </target>


    <target name="resolve" depends="init-ivy">
        <ivy:retrieve />
    </target>

</project>

  • ivy-2.4.0.jar 은 실제 파일로 수정

ivy.xml 파일


<?xml version="1.0" encoding="UTF-8"?>
<ivy-module version="2.0"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
  <info organisation="myorg" module="mymodule" />
  <dependencies>
    <dependency org="mysql" name="mysql-connector-java" rev="6.0.6"/>

  </dependencies>
</ivy-module>



의존성 해결 수행


$ ant resolve

lib 폴더에 의존성 파일들 복사됨


의존성 목록 검색


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

https://mvnrepository.com/

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



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 을 사용할 수 있다.