私は毎日の仕事でmaven 2.2.1を使用しています。最近、「maven のインストール」が非常に遅くなることがわかりました (約 3 倍遅くなります)。
多くのコンパイルとデバッグを行った後、多くの RELEASE および LATEST バージョンの依存関係 (特定の番号として使用されていた) がコンパイルの進行を妨げていることがわかりました。
「RELEASE」と「LATEST」はどちらもMavenで非推奨の機能であり、今後使用すべきではないことを知っています。しかし、「RELEASE」と「LATEST」を採用することは、私の仕事では変更できないものです。私はコードで運を試すことしかできません。そしてここにそれらがあります:
public class DefaultMavenProjectBuilder extends AbstractLogEnabled
implements MavenProjectBuilder, Initializable, Contextualizable
{
private Map processedProjectCache = new HashMap();
public MavenProject buildFromRepository( Artifact artifact,...) {
String cacheKey = createCacheKey( artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion() ); // <========= the "get key"
MavenProject project = (MavenProject) processedProjectCache.get( cacheKey );
if ( project != null )
{
return project;
}
Model model = findModelFromRepository( artifact, remoteArtifactRepositories, localRepository, allowStubModel );
ProjectBuilderConfiguration config = new DefaultProjectBuilderConfiguration().setLocalRepository( localRepository );
MavenProject mavenProject = buildInternal("Artifact [" + artifact + "]", model, config, remoteArtifactRepositories,
null, false);
return mavenProject;
}
private MavenProject buildInternal(String pomLocation,
Model model,
ProjectBuilderConfiguration config,
List parentSearchRepositories,
File projectDescriptor,
boolean strict, String cacheKey)
throws ProjectBuildingException
{
//...
cacheKey = createCacheKey( project.getGroupId(), project.getArtifactId(), project.getVersion() ); // <========= the "set key"
processedProjectCache.put( cacheKey, project );
//...
}
}
主な理由は、buildInternal() が以前よりも 10 倍以上呼び出されていることです。何が原因で、「set key」と「get key」が異なったものになりました。例えば: set key: com.foo:bar:RELEASE get key: com.foo:bar:1.0.11
私の計画は、「取得キー」をbuildInternalに渡し、「設定キー」として直接使用することですが、これが他のものを壊さないかどうかはわかりません...
何か提案はありますか?
前もって感謝します :)