summaryrefslogtreecommitdiffstats
path: root/archiva-docs/src/site/apt/adminguide/repositories.apt
blob: 0a8fc33d39bffcff6e7fe80fb642d3a9916c2aa2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
 ------
 Understanding Repository Configuration of Apache Archiva
 ------
 Maria Odea Ching
 ------
 13 Nov 2007
 ------

~~ Licensed to the Apache Software Foundation (ASF) under one
~~ or more contributor license agreements.  See the NOTICE file
~~ distributed with this work for additional information
~~ regarding copyright ownership.  The ASF licenses this file
~~ to you under the Apache License, Version 2.0 (the
~~ "License"); you may not use this file except in compliance
~~ with the License.  You may obtain a copy of the License at
~~
~~   http://www.apache.org/licenses/LICENSE-2.0
~~
~~ Unless required by applicable law or agreed to in writing,
~~ software distributed under the License is distributed on an
~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~~ KIND, either express or implied.  See the License for the
~~ specific language governing permissions and limitations
~~ under the License.

~~ NOTE: For help with the syntax of this file, see:
~~ http://maven.apache.org/guides/mini/guide-apt-format.html

Understanding Repository Configuration of Apache Archiva

~~NOTE TO MYSELF: Review this! and improve the format and the contents 
~~  			  Some parts sounds confusing to me (or am i just tired?)

  Archiva has two types of repository configuration: managed repository and remote repository. 
  
* Managed Repository

  A managed repository is a repository which resides locally to the server where Archiva is running. It could serve as a 
  proxy repository, an internal deployment repository or a local mirror repository. 
  
  Managed repository fields:  
  
  1. identifier - the id of the repository. This must be unique.
  
  2. name - the name of the repository.
  
  3. directory - the location of the repository. If the path specified does not exist, Archiva will create the missing 
  	 directories.
  	
  4. type - the repository layout (maven 2 or maven 1)
  
  5. cron - the cron schedule when repository scanning will be executed.
  
  6. repository purge by days older - the first option for repository purge. Archiva will check how old the artifact is
  	 and if it is older than the set number of days in this field, then the artifact will be deleted respecting the retention
  	 count (see #7) of course. In order to disable the purge by number of days old and set Archiva to purge by retention count, just set the 
  	 repository purge field to 0. The maximum number of days which can be set here is 1000.
  	
  7. repository purge by retention count - the second option for repository purge. When running the repository purge, Archiva
  	 will retain only the number of artifacts set for this field for a specific snapshot version. 
  	
  8. releases included - specifies whether there are released artifacts in the repository.
  
  9. snapshots included - specifies whether there are snapshot artifacts in the repository.
  
  10. scannable - specifies whether the repository can be scanned.
  
  11. delete released snapshots - specifies whether to remove those snapshot artifacts which already has release versions
  	  of it in the repository during repository purge. 

  Each repository has its own Webdav url. This allows the user to browse and access the repository via webdav. The url has the
  following format: 
 
+----+  
http://[URL TO ARCHIVA]/repository/[REPOSITORY ID] (e.g. http://localhost:8080/archiva/repository/releases).
+----+

  Managed repositories can be explicitly scanned by clicking the 'Scan Repository Now' button in the repositories page. A pom 
  snippet is also available for each repository. The \<distributionManagement\> section can be copied and pasted into a 
  project's pom to specify that the project will be deployed in that managed repository. The \<repositories\> section on the
  other hand, can be copied and pasted to a project's pom.xml or to Maven's settings.xml to tell Maven to get artifacts
  from the managed repository when building the project. 
  
  For more details about the repository purge from numbers 6 and 7 above, please take a look at the Repository Purge section
  below.

* Remote Repository

  A remote repository is a repository which resides remotely. These repositories are usually the proxied repositories. See
  Proxy Connectors on how to proxy a repository.

  Remote repository fields:  
  
  1. identifier - the id of the remote repository.
  
  2. name - the name of the remote repository.
  
  3. url - the url of the remote repository.
  
  4. username - the username (if authentication is needed) to be used to access the repository.
  
  5. password - the password (if authentication is needed) to be used to access the repository.
  
  6. type - the layout (maven 2 or maven 1) of the remote repository.  

* Repository Purge

  Repository purge is the process of cleaning up the repository of old snapshots. When deploying a snapshot to a repository, 
  Maven deploys the project/artifact with a timestamped version. Doing daily/nightly builds of the project then tends to bloat 
  the repository. What if the artifact is large? Then disk space will definitely be a problem. That's where Archiva's repository 
  purge feature comes in. Given a criteria to use -- by the number of days old and by retention count, it would clean up the 
  repository by removing old snapshots.
  
  Let's take a look at different behaviours for repository purge using the following scenario:

+----+
Artifacts in the repository:

../artifact-x/2.0-SNAPSHOT/artifact-x-20061118.060401-2.jar
../artifact-x/2.0-SNAPSHOT/artifact-x-20061118.060401-2.pom
../artifact-x/2.0-SNAPSHOT/artifact-x-20070113.034619-3.jar
../artifact-x/2.0-SNAPSHOT/artifact-x-20070113.034619-3.pom
../artifact-x/2.0-SNAPSHOT/artifact-x-20070203.028902-4.jar
../artifact-x/2.0-SNAPSHOT/artifact-x-20070203.028902-4.pom
+----+
  
  1. Repository Purge By Days Older
  
  Using this criteria for the purge, Archiva will check how old an artifact is and if it is older than the set value in the
  repository purge by days older field, then the artifact will be deleted respecting the retention count of course.
       
  If repository purge by days older is set to 100 days (with repository purge by retention count field set to 1), 
  and the current date is let's say 03-01-2007, given the scenario above.. the following artifacts will be retained:
  artifact-x-20070113.034619-3.jar, artifact-x-20070113.034619-3.pom, artifact-x-20070203.028902-4.jar and 
  artifact-x-20070203.028902-4.pom. It is clear in the version timestamps that these 4 artifacts are not more than 
  100 days old from the current date (which is 03-01-2007 in our example) so they are all retained. In this case
  the retention count doesn't have any effect since the priority is the age of the artifact. 
  
  Now, if the repository purge by days older is set to 30 days (with repository purge by retention count field still 
  set to 1) and the current date is still 03-01-2007, then given the same scenario above.. only the following artifacts
  will be retained: artifact-x-20070203.028902-4.jar and artifact-x-20070203.028902-4.pom. In this case, we can see 
  that the retained artifacts are still not older by the number of days set in the repository purge by days older field
  and the retention count is still met.
	  	
  Now, let's set the repository purge by days older to 10 days (with repository purge by retention count field still 
  set to 1) and the current date is still 03-01-2007, then still given the same repository contents above.. the 
  following artifacts will still be retained: artifact-x-20070203.028902-4.jar and artifact-x-20070203.028902-4.pom.
  It is clear from the version timestamps that the artifacts ARE MORE THAN the repository purge by days older value, 
  which is 10 days. Why is it still retained? Recall the value of the repository purge by retention count -- 1 :)
  This ensures that there is ALWAYS 1 artifact timestamped version retained for every unique version snapshot directory 
  of an artifact. 	  	
	  	
  2. Repository Purge By Retention Count
    
  If the repository purge by retention count field is set to 2, then only the artifacts artifact-x-20070113.034619-3.jar,
  artifact-x-20070113.034619-3.pom, artifact-x-20070203.028902-4.jar and artifact-x-20070203.028902-4.pom will be retained 
  in the repository. The oldest snapshots will be deleted maintaining only a number of snapshots equivalent to the set 
  retention count.