커스텀 메이븐 플러그인을 만들고 있습니다. 그 Mojos 중 하나, 나는 다음과 같은 코드 조각을 사용하여 XML 파일에서 Xpp3Dom
객체를 읽고있다 :자체 Mojo에서 메이븐 플러그인의 디렉토리 경로를 가져옵니다.
File pluginsFile = new File(
"absolute-path-to-file/plugins.xml");
Xpp3Dom Xpp3DomObject = new Xpp3Dom("plugins");
try {
FileReader reader = new FileReader(pluginsFile);
Xpp3DomObject = Xpp3DomBuilder.build(reader);
reader.close();
} catch (Exception e) {
// TODO throw exception
}
자체를 플러그인 받는다는의 src/main/resources
에 저장되어있는 내가 읽고있다있는 XML 파일 (plugins.xml
을). 내 질문은입니다. 명시 적으로 해당 파일의 절대 경로를 명시하지 않고 XML 파일을 가리키는 방법은 무엇입니까?
명확해야 :이 파일을 내 Maven 플러그인 디렉토리 아래에 놓고 싶습니다. 그것은 Maven 플러그인의 필수 부분이며이 Plugin을 사용하는 다른 Maven 프로젝트에 의해 변경되어서는 안되기 때문에 Maven 플러그인 외부에있을 수 없습니다.
필자는 Maven Mojo에서 maven 플러그인 자체의 절대 위치를 알려주는 변수/메소드를 검색했습니다. 그걸 얻으면 그 위치를 value-of-that-variable/src/main/resources/plugins.xml
으로 줄 수 있습니다. 그러나 그러한 변수를 찾을 수 없습니다. 또한 Maven 플러그인 POM의 속성을 모조 스 중 하나로 전달하여 project.build.directory
을 전달할 수있는 방법을 찾으려고했지만 길을 찾을 수 없습니다.
명확해야 함 : Maven 플러그인 디렉토리 아래 Mojos에있는 파일에 액세스하고 싶습니다.
어떤 제안 사항이 도움이 될 것입니다.
이렇게했습니다. 나는'getClassLoader(). getResource ("fileName")'을 시도하고'Xpp3DomBuilder.build()'에서 그 리소스 파일을 입력으로 직접 사용했다. 하지만'absolute-path-to-plugin-jar/jarName!/fileName'이 존재하지 않는다는 오류가 있습니다. 그러나'getResourceAsStream'을 사용하고'OutputStream'을 사용하여 임시 파일에 저장하고 그 파일을 사용했습니다. 직접 사용하지 않은 이유는 무엇입니까? –
다른 사람을 위해 명확하게하기 위해'Xpp3DomBuilder.build (input)'는 작동하지 않습니다. 입력은 파일이어야합니다. –
왜 직접 작동하지 않았습니까? 나는 당신이'getResource'에 의해 반환 된 URL을 사용하여'File'을 생성하려한다고 가정합니다. 이것은 호환되지 않는 타입입니다. 그래서'InputStream'을 반환하는'getResourceAsStream'을 사용하도록 권장했기 때문에'File' API를 사용하지 않아도됩니다. –