Debian용 Maven Java 애플리케이션을 패키징하는 방법은 무엇입니까?

Debian용 Maven Java 애플리케이션을 패키징하는 방법은 무엇입니까?

Maven으로 빌드된 Java 애플리케이션을 패키징하려고 합니다.

debian/폴더를 만들고 mh_make튜토리얼을 읽고 시청했습니다.

프로젝트 구조는 다음과 같습니다.

  • 상위 POM
  • my_app 하위 모듈
  • my_app_lib 하위 모듈(my_app에서만 사용됨)
  • shared_lib 하위 모듈(my_app에서 사용되지만 다른 애플리케이션에서는 필요할 수 있음)

다음과 같은 두 개의 deb 패키지를 만들려고 합니다.

  • /usr/share/my-appmy_app 및 해당 라이브러리를 (패키지 1)에 설치합니다.
  • 공유 라이브러리 설치 /usr/share/java(패키지 2)

이제 패키지 1의 일부를 만들었습니다.

  • 내 애플리케이션의 기본 jar /usr/share/my-app/my-app.jar및 해당 종속성 lib jar를 설치했습니다 /usr/share/my-app/lib/my-lib.jar( 를 통해 my-app.install).
  • 시작 스크립트를 생성 하고 ( 및를 통해 ) /usr/share/my-app/bin/my-app에 심볼릭 링크합니다./usr/binmy-app.installmy-app.links

POM에서 메인 클래스도 설정하고 Maven에게 jar의 매니페스트에 클래스 경로를 추가하도록 지시했습니다.

내 질문:

  1. mh_*스크립트를 강제로 실행하려면 어떻게 해야 하나요?아니요OR 디렉토리에 my_appOR my_app_lib아티팩트와 POM을 설치하시겠습니까? 참조용 내 poms 파일:/usr/share/maven-repo/usr/share/java
# The setup below does not work - my_app and my_app_lib are installed in /usr/share/maven-repo
pom.xml --ignore-pom
my_app/pom.xml --has-package-version --ignore-pom --no-usj-versionless --dest-jar=/usr/share/my_app/my_app.jar
my_app_lib/pom.xml --has-package-version --ignore-pom
lshared_lib/pom.xml --ignore
  1. lib/Maven 생성 클래스 경로에 대한 접두사를 설정하는 방법은 무엇입니까 ? 나는 현재 <classpathPrefix>lib/</classpathPrefix>POM에 a를 추가하여 이 문제를 해결했지만 데비안에 특정한 변경 사항이므로 패키징 프로세스의 일부로 이것을 설정하는 것을 선호합니다.
  2. 공유 라이브러리를 내 애플리케이션에 어떻게 연결합니까? 현재 나는 다음과 같이 생각하고 있습니다.
  • 평소대로 다른 것을 설치하십시오<package>.poms

  • my-app 바이너리 패키지에 lib 바이너리 패키지의 종속성을 추가합니다.

  • /usr/share/my-app/lib/shared-lib.jar/usr/share/java/shared-lib.jar사이에 심볼릭 링크를 추가하세요 .my-app.links

    그게 효과가 있을까요? 동일한 소스 패키지에서 두 번째 바이너리 패키지를 빌드할 수 있나요? 이것이 올바른 방법입니까?

관련 정보