View Javadoc

1   package org.apache.maven.verifier;
2   
3   /* ====================================================================
4    *   Licensed to the Apache Software Foundation (ASF) under one or more
5    *   contributor license agreements.  See the NOTICE file distributed with
6    *   this work for additional information regarding copyright ownership.
7    *   The ASF licenses this file to You under the Apache License, Version 2.0
8    *   (the "License"); you may not use this file except in compliance with
9    *   the License.  You may obtain a copy of the License at
10   *
11   *       http://www.apache.org/licenses/LICENSE-2.0
12   *
13   *   Unless required by applicable law or agreed to in writing, software
14   *   distributed under the License is distributed on an "AS IS" BASIS,
15   *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16   *   See the License for the specific language governing permissions and
17   *   limitations under the License.
18   * ====================================================================
19   */
20  
21  import java.io.File;
22  
23  import org.apache.maven.AbstractMavenComponent;
24  import org.apache.maven.project.Project;
25  
26  /**
27   * Verify the integrity of the local repository.
28   *
29   * @author <a href="mailto:jason@zenplex.com">Jason van Zyl</a>
30   * @version $Id: LocalSettingsVerifier.java 517014 2007-03-11 21:15:50Z ltheussl $
31   */
32  public class LocalSettingsVerifier
33      extends AbstractMavenComponent
34  {
35      /**
36       * Default constructor.
37       * @param project the project to verify
38       */
39      public LocalSettingsVerifier( Project project )
40      {
41          super( project );
42      }
43  
44      /**
45       * Verify user settings before attempting to verify the project.
46       *
47       * @throws RepoConfigException If an error occurs while trying to verify some basic
48       * maven settings.
49       */
50      public void verifyLocalRepository()
51          throws RepoConfigException
52      {
53          // Get local repo property.
54          String localRepoProp = getProject().getContext().getMavenRepoLocal();
55  
56          if ( localRepoProp == null )
57          {
58              // This is not likely to happen any more as it defaults
59              // to ${maven.home}/repository which is set in the driver.properties
60              throw new RepoConfigException( getMessage( "maven.repo.local.unset" ) );
61          }
62  
63          File localRepo = new File( localRepoProp );
64  
65          if ( !localRepo.exists() )
66          {
67              System.err.println( getMessage( "directory.nonexistant.warning", localRepo ) );
68  
69              if ( !localRepo.mkdirs() )
70              {
71                  throw new RepoConfigException( getMessage( "cannot.create.directory.warning", localRepo ) );
72              }
73          }
74  
75          if ( !localRepo.isDirectory() )
76          {
77              throw new RepoConfigException( getMessage( "not.directory.warning", localRepo ) );
78          }
79  
80          if ( !localRepo.canWrite() )
81          {
82              throw new RepoConfigException( getMessage( "not.writable.warning", localRepo ) );
83          }
84      }
85  }