Maven으로 빌드된 Java 애플리케이션을 패키징하려고 합니다.
debian/
폴더를 만들고 mh_make
튜토리얼을 읽고 시청했습니다.
- https://wiki.debian.org/Java/Packaging/Maven
- https://wiki.debian.org/Java/MavenRepoHelper
- https://wiki.debian.org/Java/Packaging
- https://www.youtube.com/watch?v=p767bS_8C_o
- 지금은 잊어버린 게 더 있어요
프로젝트 구조는 다음과 같습니다.
- 상위 POM
- my_app 하위 모듈
- my_app_lib 하위 모듈(my_app에서만 사용됨)
- shared_lib 하위 모듈(my_app에서 사용되지만 다른 애플리케이션에서는 필요할 수 있음)
다음과 같은 두 개의 deb 패키지를 만들려고 합니다.
/usr/share/my-app
my_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/bin
my-app.install
my-app.links
POM에서 메인 클래스도 설정하고 Maven에게 jar의 매니페스트에 클래스 경로를 추가하도록 지시했습니다.
내 질문:
mh_*
스크립트를 강제로 실행하려면 어떻게 해야 하나요?아니요OR 디렉토리에my_app
ORmy_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
lib/
Maven 생성 클래스 경로에 대한 접두사를 설정하는 방법은 무엇입니까 ? 나는 현재<classpathPrefix>lib/</classpathPrefix>
POM에 a를 추가하여 이 문제를 해결했지만 데비안에 특정한 변경 사항이므로 패키징 프로세스의 일부로 이것을 설정하는 것을 선호합니다.- 공유 라이브러리를 내 애플리케이션에 어떻게 연결합니까? 현재 나는 다음과 같이 생각하고 있습니다.
평소대로 다른 것을 설치하십시오
<package>.poms
my-app 바이너리 패키지에 lib 바이너리 패키지의 종속성을 추가합니다.
/usr/share/my-app/lib/shared-lib.jar
와/usr/share/java/shared-lib.jar
사이에 심볼릭 링크를 추가하세요 .my-app.links
그게 효과가 있을까요? 동일한 소스 패키지에서 두 번째 바이너리 패키지를 빌드할 수 있나요? 이것이 올바른 방법입니까?