diff --git a/aether-api/src/main/java/org/eclipse/aether/artifact/Artifact.java b/aether-api/src/main/java/org/eclipse/aether/artifact/Artifact.java
index 8a06ffb980350857b999e7dffd549d302ad6fd85..09db8f5f2e3a23893679466a37072a5fb1342fb7 100644
--- a/aether-api/src/main/java/org/eclipse/aether/artifact/Artifact.java
+++ b/aether-api/src/main/java/org/eclipse/aether/artifact/Artifact.java
@@ -101,29 +101,15 @@ public interface Artifact
*
* @param key The name of the property, must not be {@code null}.
* @param defaultValue The default value to return in case the property is not set, may be {@code null}.
+ * @see ArtifactProperties
*/
String getProperty( String key, String defaultValue );
/**
- * Gets the properties of this artifact. While the exact set of available properties is undefined, the following
- * properties are considered to be common:
- *
- * - type
- * - A high-level characterization of the artifact, e.g. "maven-plugin" or "test-jar".
- * - language
- * - The programming language this artifact is relevant for, e.g. "java" or "none".
- * - includesDependencies
- * - A boolean flag indicating whether the artifact presents some kind of bundle that physically includes its
- * dependencies, e.g. a fat WAR.
- * - constitutesBuildPath
- * - A boolean flag indicating whether the artifact is meant to be used for the compile/runtime/test build path of
- * a consumer project.
- * - localPath
- * - The (expected) path to the artifact on the local filesystem. An artifact which has this property set is
- * assumed to be not present in any regular repository and likewise has no artifact descriptor.
- *
+ * Gets the properties of this artifact.
*
* @return The (read-only) properties, never {@code null}.
+ * @see ArtifactProperties
*/
Map getProperties();
@@ -132,6 +118,7 @@ public interface Artifact
*
* @param properties The properties for the artifact, may be {@code null}.
* @return The new artifact, never {@code null}.
+ * @see ArtifactProperties
*/
Artifact setProperties( Map properties );
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/artifact/ArtifactProperties.java b/aether-api/src/main/java/org/eclipse/aether/artifact/ArtifactProperties.java
similarity index 95%
rename from aether-util/src/main/java/org/eclipse/aether/util/artifact/ArtifactProperties.java
rename to aether-api/src/main/java/org/eclipse/aether/artifact/ArtifactProperties.java
index 1a11ae8605945beff58a7021070cdbfb8744bed4..2f42499c77521c0431f2a404ce7c9df5579b8266 100644
--- a/aether-util/src/main/java/org/eclipse/aether/util/artifact/ArtifactProperties.java
+++ b/aether-api/src/main/java/org/eclipse/aether/artifact/ArtifactProperties.java
@@ -8,12 +8,12 @@
* Contributors:
* Sonatype, Inc. - initial API and implementation
*******************************************************************************/
-package org.eclipse.aether.util.artifact;
+package org.eclipse.aether.artifact;
/**
* The keys for common properties of artifacts.
*
- * @see org.eclipse.aether.artifact.Artifact#getProperties()
+ * @see Artifact#getProperties()
*/
public final class ArtifactProperties
{
diff --git a/aether-api/src/main/java/org/eclipse/aether/transfer/ArtifactNotFoundException.java b/aether-api/src/main/java/org/eclipse/aether/transfer/ArtifactNotFoundException.java
index ae2b77d2f4cc6a3cdb84a91d873cd05ecd650384..348a0b53bee37668703b11fcb2d9e0b1fb2d6202 100644
--- a/aether-api/src/main/java/org/eclipse/aether/transfer/ArtifactNotFoundException.java
+++ b/aether-api/src/main/java/org/eclipse/aether/transfer/ArtifactNotFoundException.java
@@ -11,6 +11,7 @@
package org.eclipse.aether.transfer;
import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.artifact.ArtifactProperties;
import org.eclipse.aether.repository.RemoteRepository;
/**
@@ -32,12 +33,12 @@ public class ArtifactNotFoundException
buffer.append( getString( " in ", repository ) );
if ( artifact != null )
{
- String localPath = artifact.getProperty( "localPath", null );
+ String localPath = artifact.getProperty( ArtifactProperties.LOCAL_PATH, null );
if ( localPath != null && repository == null )
{
buffer.append( " at specified path " ).append( localPath );
}
- String downloadUrl = artifact.getProperty( "downloadUrl", null );
+ String downloadUrl = artifact.getProperty( ArtifactProperties.DOWNLOAD_URL, null );
if ( downloadUrl != null )
{
buffer.append( ", try downloading from " ).append( downloadUrl );
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultArtifactResolver.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultArtifactResolver.java
index 41afb7caf20f740434be1853b058bef47cc369e4..08424826bf227ded7a674ba574de6da939acc76d 100644
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultArtifactResolver.java
+++ b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultArtifactResolver.java
@@ -29,6 +29,7 @@ import org.eclipse.aether.RequestTrace;
import org.eclipse.aether.SyncContext;
import org.eclipse.aether.RepositoryEvent.EventType;
import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.artifact.ArtifactProperties;
import org.eclipse.aether.impl.ArtifactResolver;
import org.eclipse.aether.impl.RemoteRepositoryManager;
import org.eclipse.aether.impl.RepositoryEventDispatcher;
@@ -64,7 +65,6 @@ import org.eclipse.aether.transfer.ArtifactTransferException;
import org.eclipse.aether.transfer.NoRepositoryConnectorException;
import org.eclipse.aether.util.ConfigUtils;
import org.eclipse.aether.util.DefaultRequestTrace;
-import org.eclipse.aether.util.artifact.ArtifactProperties;
import org.eclipse.aether.util.listener.DefaultRepositoryEvent;
/**
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDependencyCollector.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDependencyCollector.java
index cd04d02eb5cc03bb376b49a2916849892dc216b0..9c382a27690bcc140fbb1f5c5671e7815518d24d 100644
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDependencyCollector.java
+++ b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDependencyCollector.java
@@ -25,6 +25,7 @@ import org.eclipse.aether.RepositoryException;
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.RequestTrace;
import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.artifact.ArtifactProperties;
import org.eclipse.aether.collection.CollectRequest;
import org.eclipse.aether.collection.CollectResult;
import org.eclipse.aether.collection.DependencyCollectionException;
@@ -53,7 +54,6 @@ import org.eclipse.aether.spi.log.LoggerFactory;
import org.eclipse.aether.spi.log.NullLoggerFactory;
import org.eclipse.aether.util.DefaultRepositorySystemSession;
import org.eclipse.aether.util.DefaultRequestTrace;
-import org.eclipse.aether.util.artifact.ArtifactProperties;
import org.eclipse.aether.version.Version;
/**
diff --git a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultArtifactResolverTest.java b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultArtifactResolverTest.java
index 93eb5aeb2b3743b7a68be7bc4ebdd3f1e390d560..80080e63ffc035663a1841e5065fa6a39f83160b 100644
--- a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultArtifactResolverTest.java
+++ b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultArtifactResolverTest.java
@@ -22,6 +22,7 @@ import java.util.Map;
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.artifact.ArtifactProperties;
import org.eclipse.aether.impl.UpdateCheckManager;
import org.eclipse.aether.impl.VersionResolver;
import org.eclipse.aether.internal.impl.DefaultArtifactResolver;
@@ -57,7 +58,6 @@ import org.eclipse.aether.spi.connector.ArtifactDownload;
import org.eclipse.aether.spi.connector.MetadataDownload;
import org.eclipse.aether.transfer.ArtifactNotFoundException;
import org.eclipse.aether.transfer.ArtifactTransferException;
-import org.eclipse.aether.util.artifact.ArtifactProperties;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
diff --git a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultDependencyCollectorTest.java b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultDependencyCollectorTest.java
index b1460cf20500928961d3e78b4761af9171ab36ab..ad81457f17a2ac28844f0faa79fe71f360d0dae2 100644
--- a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultDependencyCollectorTest.java
+++ b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultDependencyCollectorTest.java
@@ -23,6 +23,7 @@ import java.util.Map;
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.artifact.ArtifactProperties;
import org.eclipse.aether.collection.CollectRequest;
import org.eclipse.aether.collection.CollectResult;
import org.eclipse.aether.collection.DependencyCollectionContext;
@@ -39,7 +40,6 @@ import org.eclipse.aether.repository.RemoteRepository;
import org.eclipse.aether.resolution.ArtifactDescriptorException;
import org.eclipse.aether.resolution.ArtifactDescriptorRequest;
import org.eclipse.aether.resolution.ArtifactDescriptorResult;
-import org.eclipse.aether.util.artifact.ArtifactProperties;
import org.eclipse.aether.util.graph.manager.ClassicDependencyManager;
import org.junit.Before;
import org.junit.Test;
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/artifact/DefaultArtifactType.java b/aether-util/src/main/java/org/eclipse/aether/util/artifact/DefaultArtifactType.java
index 9703bcf38312118249668df319680cc5684c8c89..e2c983a79ad8870ea105ac2e9928d4d77bb62ed7 100644
--- a/aether-util/src/main/java/org/eclipse/aether/util/artifact/DefaultArtifactType.java
+++ b/aether-util/src/main/java/org/eclipse/aether/util/artifact/DefaultArtifactType.java
@@ -13,8 +13,8 @@ package org.eclipse.aether.util.artifact;
import java.util.HashMap;
import java.util.Map;
+import org.eclipse.aether.artifact.ArtifactProperties;
import org.eclipse.aether.artifact.ArtifactType;
-import org.eclipse.aether.util.artifact.ArtifactProperties;
/**
* A simple artifact type.
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/manager/ClassicDependencyManager.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/manager/ClassicDependencyManager.java
index 46aad5bcaad59453f8eb146af004facaa32dc471..89e9699278bdfed22125f5588c1defed16691457 100644
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/manager/ClassicDependencyManager.java
+++ b/aether-util/src/main/java/org/eclipse/aether/util/graph/manager/ClassicDependencyManager.java
@@ -17,12 +17,12 @@ import java.util.LinkedHashSet;
import java.util.Map;
import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.artifact.ArtifactProperties;
import org.eclipse.aether.collection.DependencyCollectionContext;
import org.eclipse.aether.collection.DependencyManagement;
import org.eclipse.aether.collection.DependencyManager;
import org.eclipse.aether.graph.Dependency;
import org.eclipse.aether.graph.Exclusion;
-import org.eclipse.aether.util.artifact.ArtifactProperties;
import org.eclipse.aether.util.artifact.JavaScopes;
/**
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/traverser/FatArtifactTraverser.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/traverser/FatArtifactTraverser.java
index d57943adc8cfc4ac45c04445db85cea743220861..5c5febd136de5fbc4ff47c103889c5429e98bf1a 100644
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/traverser/FatArtifactTraverser.java
+++ b/aether-util/src/main/java/org/eclipse/aether/util/graph/traverser/FatArtifactTraverser.java
@@ -10,14 +10,14 @@
*******************************************************************************/
package org.eclipse.aether.util.graph.traverser;
+import org.eclipse.aether.artifact.ArtifactProperties;
import org.eclipse.aether.collection.DependencyCollectionContext;
import org.eclipse.aether.collection.DependencyTraverser;
import org.eclipse.aether.graph.Dependency;
-import org.eclipse.aether.util.artifact.ArtifactProperties;
/**
* A dependency traverser that excludes the dependencies of fat artifacts from the traversal. Fat artifacts are
- * artifacts that have the property {@link org.eclipse.aether.util.artifact.ArtifactProperties#INCLUDES_DEPENDENCIES}
+ * artifacts that have the property {@link org.eclipse.aether.artifact.ArtifactProperties#INCLUDES_DEPENDENCIES}
* set to {@code true}.
*
* @see org.eclipse.aether.artifact.Artifact#getProperties()
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/artifact/DefaultArtifactTest.java b/aether-util/src/test/java/org/eclipse/aether/util/artifact/DefaultArtifactTest.java
index cc6753a85ae3b298553b238991eba145fb75bd67..bbc928af06c4f21483ba1e323d511c9e0c54e39e 100644
--- a/aether-util/src/test/java/org/eclipse/aether/util/artifact/DefaultArtifactTest.java
+++ b/aether-util/src/test/java/org/eclipse/aether/util/artifact/DefaultArtifactTest.java
@@ -18,7 +18,7 @@ import java.util.HashMap;
import java.util.Map;
import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.util.artifact.ArtifactProperties;
+import org.eclipse.aether.artifact.ArtifactProperties;
import org.eclipse.aether.util.artifact.DefaultArtifact;
import org.eclipse.aether.util.artifact.DefaultArtifactType;
import org.junit.Test;