업무 진행 중에, sap 연동해야 되는 상황이 생겼다. 문제는 sap 과 연동할 jar 파일을 maven 중앙저장소에서 땡겨오려고 했더니 403 권한에러가 뜨더라.. 뭔가 가입을 하고, 권한을 받아줘야 되는가 보다. 다행히 그 쪽 기업에서 준 연동 라이브러리가 있는데, 처음에는 직접 경로를 줘서 jar 파일을 포함시켰다. 이러면 문제점이 로컬에서 실행할 때는 잘 되지만, maven install - jar파일로 압축할 떄, 패키지를 못 찾게 되었다.
위의 방법은 취소하고, 직접 프로젝트 안에 lib 폴더를 만들고, jar 파일을 집어넣었다.
그리고 scope과 systemPath를 아래와 같이 주었다.
<!-- https://mvnrepository.com/artifact/com.sap.conn.jco/sapjco3 -->
<dependency>
<groupId>com.sap.conn.jco</groupId>
<artifactId>sapjco3</artifactId>
<version>3.0.14</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/sapjco3.jar</systemPath>
</dependency>
역시나 요렇게만 해주면 build 시에는 문제없이 잘 동작하지만, 아카이브, 패키징 하면 라이브러리를 못 찾는다.. 따라서, true 설정을 해줘야 된다.
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
이제는 잘 package을 해준다 ㅎㅎ, 그러나 잘 말아진 jar 파일을 실행하니 또 문제점이 발생했다.
Illegal JCo archive "sapjco3-3.0.14.jar". It is not allowed to rename or repackage the original archive "sapjco3.jar".
라이브러리 이름을 바꾸지 못하게하는 SAP의 sapjco3.jar 정책이 발목을 잡았다.. 온갖 시도를 다 해봤다. version 정보를 공백으로 줄 수 있는 방법만 찾다가 뜻 밖의 해결책을 발견했다.
<artifactId>com.sap.conn.jco.sapjco3.jar</artifactId>
maven을 사용할 때 이 유효성 검사를 방지하려면 아티팩트 이름의 파일 이름 "com.sap.conn.jco"에 다음 접두사를 추가하여 최종 파일 이름이 com.sap.conn.jco.sapjco3-3.xxjar이 되도록 합니다.
이제는 잘 된다.. ㅎ 그런데 어쩐 일인지, 우분투에서 배포를 하니, 이미 깔아놨던 so 파일을 찾지 못해서인지 에러를 일으키더라.. mainfest 설정파일을 수정했다. pom.xml 에 아래 plugin 정보를 추가했다. 요 부분은 다른 분이 작업하신 거라, 나도 원인을 잘 찾지는 못하겠다..
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
<manifestEntries>
<Built-By>Me</Built-By>
<Class-Path>/server/tomcat/lib/system/sapjco3.jar</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
https://stackoverflow.com/questions/65003590/quarkus-and-provided-dependencies-sapjco3-jar
위의 링크 참조
https://yujuwon.tistory.com/entry/maven에-custom-jar를-집어넣어-보자
https://stackoverflow.com/questions/4955635/how-to-add-local-jar-files-to-a-maven-project
https://www.hanumoka.net/2020/01/24/maven-20200124-java-maven-local-repository/
https://slf4me.com/post/spring-boot/maven-include-system-library/
https://joohoon.tistory.com/35