1

私は毎日の仕事で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に渡し、「設定キー」として直接使用することですが、これが他のものを壊さないかどうかはわかりません...

何か提案はありますか?

前もって感謝します :)

4

0 に答える 0