2015-01-27 2 views
0

스프링 버전을 업그레이드하고 Spring IO Platform BOM을 사용하려고 시도하고 있지만 일부 클래스가 누락되거나 (다른 아티팩트로 옮겨 졌거나) 더 이상 내가 가져온 것의 종속성이 없습니다. 원래 패키지의 일부 패키지 (CSVStrategy)를 찾으려고합니다. WhitespaceTokenizer과 같은 이러한 종속성 중 일부는이를 제공 할 수있는 12 개의 이슈 이름을 가지고 있으며 정확한 업그레이드 경로를 찾으려면 현재 어디에서 왔는지 파악해야합니다.클래스가 어떤 메이븐 아티팩트를 발견 할 수있는 방법이 있습니까?

+0

search.maven.org의 [클래스 이름 검색] (http://search.maven.org/#advancedsearch%7Cgav)이 도움이됩니까? 또한 릴리스 정보를 읽고 싶을 수도 있으며, 이동 된 클래스를 언급해야합니다. –

+0

다시는 도움이 안된다. 왜냐하면 내가 갖고있는 것이 무엇인지 알기를 원하기 때문이다. 언급 된 특정 클래스는 간접적 인 의존성이나 무언가로 보인다. 나는 내가 알아낼 수없는 한, 릴리스 노트를 읽을 수 없다. 사용하고 있습니다. – xenoterracide

+0

이클립스에 있다고 가정하면 소스 코드의 클래스 이름에 마우스 커서를 놓고 F3을 누릅니다. 어쨌든 Java는 짧은 클래스 이름에서는 작동하지 않지만 정규화 된 클래스 이름을 사용하므로 패키지 이름을 나타내는 해당 클래스에 대한 가져 오기가 있어야합니다. 이 클래스를 제공하는 클래스 패스에는 하나의 이슈 만 있어야합니다. – rec

답변

0

하나의 가능한 방법은 리소스 (클래스) 위치를 얻는 것일 수 있습니다. 클래스가 jar 파일에서 나온다면 적어도 jar 이름을 얻습니다. 그로부터 당신은 메이븐 인공물을 식별 할 수 있어야합니다.

someClass.getProtectionDomain().getCodeSource().getLocation().toURI(); 

아니면위한 ResourceLoader하고 클래스 경로/서블릿 경로에 모든 클래스의 목록을 인쇄 할 수있는 로거와

.

@Autowired 
ResourceLoader resourceLoader; 

public void printResourceLocations() { 
    PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(resourceLoader); 
    Resource[] resources = resolver.getResources("classpath*:com/**/*.class")); 
    for (Resource resource : resources) { 
     log.info(resource.getURI()); 
     // Not sure if that works, probably getFile() is ok? 
    } 
}  
0

저는 과거에이 유형의 작업에 JBoss Tattletale을 사용했습니다. 나는 그것이 더 이상 더 이상 적극적으로 유지되고 있다고 생각하지 않지만, 그것은 여전히 ​​나를 위해 일한다. 다음은 내가 사용하는 설정입니다. 참고로, 목표 '보고서'가 보고서 플러그인임을 암시하는 것처럼 보이지만 POM의 빌드 섹션에이를 추가해야합니다.

<plugin> 
    <groupId>org.jboss.tattletale</groupId> 
    <artifactId>tattletale-maven</artifactId> 
    <!-- The version of the plugin you want to use --> 
    <version>1.2.0.Beta2</version> 
    <executions> 
    <execution> 
     <goals> 
     <goal>report</goal> 
     </goals> 
    </execution> 
    </executions> 
    <configuration> 
    <!-- This is the location which will be scanned for generating tattletale reports --> 
    <source>${project.build.directory}/${project.artifactId}/WEB-INF/lib</source> 
    <!-- This is where the reports will be generated --> 
    <destination>${project.build.directory}/site/tattletale</destination> 
    </configuration> 
</plugin> 

jHades도 시도해 볼 수 있습니다. 나는 그것을 사용할 수있는 기회를 아직 가지고 있지 않다. 그것은 조사해야 할 나의 목록에있다.