Skip to content
GitLab
Explore
Sign in
Register
Commits on Source (2)
New upstream version 1.3.0
· 32faf0ad
Emmanuel Bourg
authored
Nov 19, 2018
32faf0ad
New upstream version 1.3.1
· e38d0010
Emmanuel Bourg
authored
Nov 19, 2018
e38d0010
Show whitespace changes
Inline
Side-by-side
.travis.yml
0 → 100644
View file @
e38d0010
language
:
java
sudo
:
false
dist
:
trusty
matrix
:
include
:
-
os
:
linux
jdk
:
openjdk7
-
os
:
linux
jdk
:
openjdk8
-
os
:
linux
jdk
:
openjdk10
before_install
:
# https://github.com/travis-ci/travis-ci/issues/8408
-
unset _JAVA_OPTIONS
install
:
mvn clean dependency:go-offline -V
before_script
:
true
script
:
-
mvn verify
cache
:
directories
:
-
"
$HOME/.cache"
-
"
$HOME/.m2"
Jenkinsfile
View file @
e38d0010
/*
/*
*
* 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
...
...
@@ -17,34 +17,4 @@
* under the License.
*/
properties
([
buildDiscarder
(
logRotator
(
artifactNumToKeepStr:
'5'
,
numToKeepStr:
env
.
BRANCH_NAME
==
'master'
?
'10'
:
'5'
))])
node
(
'ubuntu'
)
{
try
{
stage
(
'Checkout'
)
def
MAVEN_BUILD
=
tool
name:
'Maven 3.3.9'
,
type:
'hudson.tasks.Maven$MavenInstallation'
echo
"Driving build and unit tests using Maven $MAVEN_BUILD"
def
JAVA7_HOME
=
tool
name:
'JDK 1.7 (latest)'
,
type:
'hudson.model.JDK'
echo
"Running build and unit tests with Java $JAVA7_HOME"
dir
(
'build'
)
{
deleteDir
()
}
dir
(
'build'
)
{
checkout
scm
}
stage
(
'Build/Test'
)
def
WORK_DIR
=
pwd
()
dir
(
'build'
)
{
try
{
withEnv
([
"PATH+MAVEN=$MAVEN_BUILD/bin"
,
"PATH+JDK=$JAVA7_HOME/bin"
])
{
sh
"mvn clean verify -B -U -e -fae -V -Dmaven.test.failure.ignore=true -Dmaven.repo.local=$WORK_DIR/.repository"
}
}
finally
{
junit
allowEmptyResults:
true
,
testResults:
'**/target/*-reports/*.xml'
archiveArtifacts
allowEmptyArchive:
true
,
artifacts:
'**/target/rat.txt'
}
}
}
finally
{
emailext
body:
"See ${env.BUILD_URL}"
,
recipientProviders:
[[
$class
:
'CulpritsRecipientProvider'
],
[
$class
:
'FailingTestSuspectsRecipientProvider'
],
[
$class
:
'FirstFailingBuildSuspectsRecipientProvider'
]],
replyTo:
'dev@maven.apache.org'
,
subject:
"Maven Resolver Jenkinsfile finished with ${currentBuild.result}"
,
to:
'notifications@maven.apache.org'
}
}
asfMavenTlpStdBuild
()
maven-resolver-api/pom.xml
View file @
e38d0010
...
...
@@ -25,7 +25,7 @@
<parent>
<groupId>
org.apache.maven.resolver
</groupId>
<artifactId>
maven-resolver
</artifactId>
<version>
1.
1
.1
</version>
<version>
1.
3
.1
</version>
</parent>
<artifactId>
maven-resolver-api
</artifactId>
...
...
@@ -36,7 +36,8 @@
</description>
<properties>
<AutomaticModuleName>
org.apache.maven.resolver
</AutomaticModuleName>
<Automatic-Module-Name>
org.apache.maven.resolver
</Automatic-Module-Name>
<Bundle-SymbolicName>
${Automatic-Module-Name}.api
</Bundle-SymbolicName>
</properties>
<dependencies>
...
...
@@ -50,5 +51,29 @@
<artifactId>
hamcrest-core
</artifactId>
<scope>
test
</scope>
</dependency>
<dependency>
<groupId>
org.mockito
</groupId>
<artifactId>
mockito-core
</artifactId>
<scope>
test
</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>
org.apache.felix
</groupId>
<artifactId>
maven-bundle-plugin
</artifactId>
</plugin>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-jar-plugin
</artifactId>
<configuration>
<archive>
<manifestFile>
${project.build.directory}/osgi/MANIFEST.MF
</manifestFile>
</archive>
</configuration>
</plugin>
</plugins>
</build>
</project>
maven-resolver-api/src/main/java/org/eclipse/aether/AbstractForwardingRepositorySystemSession.java
View file @
e38d0010
...
...
@@ -36,6 +36,7 @@ import org.eclipse.aether.repository.WorkspaceReader;
import
org.eclipse.aether.resolution.ArtifactDescriptorPolicy
;
import
org.eclipse.aether.resolution.ResolutionErrorPolicy
;
import
org.eclipse.aether.transfer.TransferListener
;
import
org.eclipse.aether.transform.FileTransformerManager
;
/**
* A special repository system session to enable decorating or proxying another session. To do so, clients have to
...
...
@@ -61,129 +62,160 @@ public abstract class AbstractForwardingRepositorySystemSession
*/
protected
abstract
RepositorySystemSession
getSession
();
@Override
public
boolean
isOffline
()
{
return
getSession
().
isOffline
();
}
@Override
public
boolean
isIgnoreArtifactDescriptorRepositories
()
{
return
getSession
().
isIgnoreArtifactDescriptorRepositories
();
}
@Override
public
ResolutionErrorPolicy
getResolutionErrorPolicy
()
{
return
getSession
().
getResolutionErrorPolicy
();
}
@Override
public
ArtifactDescriptorPolicy
getArtifactDescriptorPolicy
()
{
return
getSession
().
getArtifactDescriptorPolicy
();
}
@Override
public
String
getChecksumPolicy
()
{
return
getSession
().
getChecksumPolicy
();
}
@Override
public
String
getUpdatePolicy
()
{
return
getSession
().
getUpdatePolicy
();
}
@Override
public
LocalRepository
getLocalRepository
()
{
return
getSession
().
getLocalRepository
();
}
@Override
public
LocalRepositoryManager
getLocalRepositoryManager
()
{
return
getSession
().
getLocalRepositoryManager
();
}
@Override
public
WorkspaceReader
getWorkspaceReader
()
{
return
getSession
().
getWorkspaceReader
();
}
@Override
public
RepositoryListener
getRepositoryListener
()
{
return
getSession
().
getRepositoryListener
();
}
@Override
public
TransferListener
getTransferListener
()
{
return
getSession
().
getTransferListener
();
}
@Override
public
Map
<
String
,
String
>
getSystemProperties
()
{
return
getSession
().
getSystemProperties
();
}
@Override
public
Map
<
String
,
String
>
getUserProperties
()
{
return
getSession
().
getUserProperties
();
}
@Override
public
Map
<
String
,
Object
>
getConfigProperties
()
{
return
getSession
().
getConfigProperties
();
}
@Override
public
MirrorSelector
getMirrorSelector
()
{
return
getSession
().
getMirrorSelector
();
}
@Override
public
ProxySelector
getProxySelector
()
{
return
getSession
().
getProxySelector
();
}
@Override
public
AuthenticationSelector
getAuthenticationSelector
()
{
return
getSession
().
getAuthenticationSelector
();
}
@Override
public
ArtifactTypeRegistry
getArtifactTypeRegistry
()
{
return
getSession
().
getArtifactTypeRegistry
();
}
@Override
public
DependencyTraverser
getDependencyTraverser
()
{
return
getSession
().
getDependencyTraverser
();
}
@Override
public
DependencyManager
getDependencyManager
()
{
return
getSession
().
getDependencyManager
();
}
@Override
public
DependencySelector
getDependencySelector
()
{
return
getSession
().
getDependencySelector
();
}
@Override
public
VersionFilter
getVersionFilter
()
{
return
getSession
().
getVersionFilter
();
}
@Override
public
DependencyGraphTransformer
getDependencyGraphTransformer
()
{
return
getSession
().
getDependencyGraphTransformer
();
}
@Override
public
SessionData
getData
()
{
return
getSession
().
getData
();
}
@Override
public
RepositoryCache
getCache
()
{
return
getSession
().
getCache
();
}
@Override
public
FileTransformerManager
getFileTransformerManager
()
{
return
getSession
().
getFileTransformerManager
();
}
}
maven-resolver-api/src/main/java/org/eclipse/aether/DefaultRepositorySystemSession.java
View file @
e38d0010
...
...
@@ -24,6 +24,9 @@ import java.util.HashMap;
import
java.util.Map
;
import
static
java
.
util
.
Objects
.
requireNonNull
;
import
java.util.Collection
;
import
org.eclipse.aether.artifact.Artifact
;
import
org.eclipse.aether.artifact.ArtifactType
;
import
org.eclipse.aether.artifact.ArtifactTypeRegistry
;
import
org.eclipse.aether.collection.DependencyGraphTransformer
;
...
...
@@ -44,6 +47,8 @@ import org.eclipse.aether.repository.WorkspaceReader;
import
org.eclipse.aether.resolution.ArtifactDescriptorPolicy
;
import
org.eclipse.aether.resolution.ResolutionErrorPolicy
;
import
org.eclipse.aether.transfer.TransferListener
;
import
org.eclipse.aether.transform.FileTransformer
;
import
org.eclipse.aether.transform.FileTransformerManager
;
/**
* A simple repository system session.
...
...
@@ -73,6 +78,8 @@ public final class DefaultRepositorySystemSession
private
LocalRepositoryManager
localRepositoryManager
;
private
FileTransformerManager
fileTransformerManager
;
private
WorkspaceReader
workspaceReader
;
private
RepositoryListener
repositoryListener
;
...
...
@@ -130,6 +137,7 @@ public final class DefaultRepositorySystemSession
proxySelector
=
NullProxySelector
.
INSTANCE
;
authenticationSelector
=
NullAuthenticationSelector
.
INSTANCE
;
artifactTypeRegistry
=
NullArtifactTypeRegistry
.
INSTANCE
;
fileTransformerManager
=
NullFileTransformerManager
.
INSTANCE
;
data
=
new
DefaultSessionData
();
}
...
...
@@ -167,6 +175,7 @@ public final class DefaultRepositorySystemSession
setDependencySelector
(
session
.
getDependencySelector
()
);
setVersionFilter
(
session
.
getVersionFilter
()
);
setDependencyGraphTransformer
(
session
.
getDependencyGraphTransformer
()
);
setFileTransformerManager
(
session
.
getFileTransformerManager
()
);
setData
(
session
.
getData
()
);
setCache
(
session
.
getCache
()
);
}
...
...
@@ -317,6 +326,23 @@ public final class DefaultRepositorySystemSession
return
this
;
}
@Override
public
FileTransformerManager
getFileTransformerManager
()
{
return
fileTransformerManager
;
}
public
DefaultRepositorySystemSession
setFileTransformerManager
(
FileTransformerManager
fileTransformerManager
)
{
failIfReadOnly
();
this
.
fileTransformerManager
=
fileTransformerManager
;
if
(
this
.
fileTransformerManager
==
null
)
{
this
.
fileTransformerManager
=
NullFileTransformerManager
.
INSTANCE
;
}
return
this
;
}
public
WorkspaceReader
getWorkspaceReader
()
{
return
workspaceReader
;
...
...
@@ -829,4 +855,15 @@ public final class DefaultRepositorySystemSession
}
static
final
class
NullFileTransformerManager
implements
FileTransformerManager
{
public
static
final
FileTransformerManager
INSTANCE
=
new
NullFileTransformerManager
();
@Override
public
Collection
<
FileTransformer
>
getTransformersForArtifact
(
Artifact
artifact
)
{
return
Collections
.
emptyList
();
}
}
}
maven-resolver-api/src/main/java/org/eclipse/aether/RepositorySystemSession.java
View file @
e38d0010
...
...
@@ -37,6 +37,7 @@ import org.eclipse.aether.repository.WorkspaceReader;
import
org.eclipse.aether.resolution.ArtifactDescriptorPolicy
;
import
org.eclipse.aether.resolution.ResolutionErrorPolicy
;
import
org.eclipse.aether.transfer.TransferListener
;
import
org.eclipse.aether.transform.FileTransformerManager
;
/**
* Defines settings and components that control the repository system. Once initialized, the session object itself is
...
...
@@ -260,4 +261,11 @@ public interface RepositorySystemSession
*/
RepositoryCache
getCache
();
/**
* Get the file transformer manager
*
* @return the manager, never {@code null}
*/
FileTransformerManager
getFileTransformerManager
();
}
maven-resolver-api/src/main/java/org/eclipse/aether/artifact/DefaultArtifact.java
View file @
e38d0010
...
...
@@ -33,6 +33,8 @@ import java.util.regex.Pattern;
public
final
class
DefaultArtifact
extends
AbstractArtifact
{
private
static
final
Pattern
COORDINATE_PATTERN
=
Pattern
.
compile
(
"([^: ]+):([^: ]+)(:([^: ]*)(:([^: ]+))?)?:([^: ]+)"
);
private
final
String
groupId
;
...
...
@@ -70,8 +72,7 @@ public final class DefaultArtifact
*/
public
DefaultArtifact
(
String
coords
,
Map
<
String
,
String
>
properties
)
{
Pattern
p
=
Pattern
.
compile
(
"([^: ]+):([^: ]+)(:([^: ]*)(:([^: ]+))?)?:([^: ]+)"
);
Matcher
m
=
p
.
matcher
(
coords
);
Matcher
m
=
COORDINATE_PATTERN
.
matcher
(
coords
);
if
(
!
m
.
matches
()
)
{
throw
new
IllegalArgumentException
(
"Bad artifact coordinates "
+
coords
...
...
maven-resolver-api/src/main/java/org/eclipse/aether/transform/FileTransformer.java
0 → 100644
View file @
e38d0010
package
org.eclipse.aether.transform
;
/*
* 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.
*/
import
java.io.File
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
org.eclipse.aether.artifact.Artifact
;
/**
* Can transform a file while installing/deploying
*
* @author Robert Scholte
* @since 1.3.0
*/
public
interface
FileTransformer
{
/**
* Transform the target location
*
* @param artifact the original artifact
* @return the transformed artifact
*/
Artifact
transformArtifact
(
Artifact
artifact
);
/**
* Transform the data
*
* @param file the file with the original data
* @return the transformed data
*/
InputStream
transformData
(
File
file
)
throws
IOException
;
}
maven-resolver-api/src/main/java/org/eclipse/aether/transform/FileTransformerManager.java
0 → 100644
View file @
e38d0010
package
org.eclipse.aether.transform
;
/*
* 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.
*/
import
java.util.Collection
;
import
org.eclipse.aether.artifact.Artifact
;
/**
* Manager the FileTransformers
*
* @author Robert Scholte
* @since 1.3.0
*/
public
interface
FileTransformerManager
{
/**
* <p>
* All transformers for this specific artifact. Be aware that if you want to create additional files, but also want
* to the original to be deployed, you must add an explicit transformer for that file too (one that doesn't
* transform the artifact and data).
* </p>
*
* <p><strong>IMPORTANT</strong> When using a fileTransformer, the content of the file is stored in memory to ensure
* that file content and checksums stay in sync!
* </p>
*
* @param artifact the artifact
* @return a collection of FileTransformers to apply on the artifact, never {@code null}
*/
Collection
<
FileTransformer
>
getTransformersForArtifact
(
Artifact
artifact
);
}
maven-resolver-api/src/test/java/org/eclipse/aether/DefaultRepositorySystemSessionTest.java
View file @
e38d0010
...
...
@@ -18,10 +18,13 @@ package org.eclipse.aether;
* specific language governing permissions and limitations
* under the License.
*/
import
static
org
.
junit
.
Assert
.
assertEquals
;
import
static
org
.
junit
.
Assert
.
assertSame
;
import
static
org
.
junit
.
Assert
.
fail
;
import
static
org
.
junit
.
Assert
.*;
import
java.lang.reflect.Method
;
import
java.util.Map
;
import
java.util.Objects
;
import
org.eclipse.aether.repository.Authentication
;
import
org.eclipse.aether.repository.AuthenticationContext
;
...
...
@@ -29,6 +32,7 @@ import org.eclipse.aether.repository.AuthenticationDigest;
import
org.eclipse.aether.repository.Proxy
;
import
org.eclipse.aether.repository.RemoteRepository
;
import
org.junit.Test
;
import
org.mockito.Mockito
;
/**
*/
...
...
@@ -124,4 +128,20 @@ public class DefaultRepositorySystemSessionTest
}
}
@Test
public
void
testCopyRepositorySystemSession
()
throws
Exception
{
RepositorySystemSession
session
=
Mockito
.
mock
(
RepositorySystemSession
.
class
,
Mockito
.
RETURNS_MOCKS
);
RepositorySystemSession
newSession
=
new
DefaultRepositorySystemSession
(
session
);
Method
[]
methods
=
RepositorySystemSession
.
class
.
getMethods
();
for
(
Method
method
:
methods
)
{
assertEquals
(
method
.
getName
(),
method
.
invoke
(
session
)
==
null
,
method
.
invoke
(
newSession
)
==
null
);
}
}
}
maven-resolver-connector-basic/pom.xml
View file @
e38d0010
...
...
@@ -25,7 +25,7 @@
<parent>
<groupId>
org.apache.maven.resolver
</groupId>
<artifactId>
maven-resolver
</artifactId>
<version>
1.
1
.1
</version>
<version>
1.
3
.1
</version>
</parent>
<artifactId>
maven-resolver-connector-basic
</artifactId>
...
...
@@ -36,7 +36,8 @@
</description>
<properties>
<AutomaticModuleName>
org.apache.maven.resolver.connector.basic
</AutomaticModuleName>
<Automatic-Module-Name>
org.apache.maven.resolver.connector.basic
</Automatic-Module-Name>
<Bundle-SymbolicName>
${Automatic-Module-Name}
</Bundle-SymbolicName>
</properties>
<dependencies>
...
...
@@ -58,6 +59,15 @@
<scope>
provided
</scope>
<optional>
true
</optional>
</dependency>
<dependency>
<groupId>
org.slf4j
</groupId>
<artifactId>
slf4j-api
</artifactId>
</dependency>
<dependency>
<groupId>
org.slf4j
</groupId>
<artifactId>
slf4j-simple
</artifactId>
<scope>
test
</scope>
</dependency>
<dependency>
<groupId>
org.sonatype.sisu
</groupId>
<artifactId>
sisu-guice
</artifactId>
...
...
@@ -87,6 +97,19 @@
<groupId>
org.eclipse.sisu
</groupId>
<artifactId>
sisu-maven-plugin
</artifactId>
</plugin>
<plugin>
<groupId>
org.apache.felix
</groupId>
<artifactId>
maven-bundle-plugin
</artifactId>
</plugin>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-jar-plugin
</artifactId>
<configuration>
<archive>
<manifestFile>
${project.build.directory}/osgi/MANIFEST.MF
</manifestFile>
</archive>
</configuration>
</plugin>
</plugins>
</build>
</project>
maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/BasicRepositoryConnector.java
View file @
e38d0010
...
...
@@ -19,15 +19,18 @@ package org.eclipse.aether.connector.basic;
* under the License.
*/
import
static
java
.
util
.
Objects
.
requireNonNull
;
import
java.io.ByteArrayOutputStream
;
import
java.io.File
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.net.URI
;
import
java.util.Collection
;
import
java.util.Collections
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Map
;
import
static
java
.
util
.
Objects
.
requireNonNull
;
import
java.util.Set
;
import
java.util.concurrent.Executor
;
import
java.util.concurrent.ExecutorService
;
...
...
@@ -54,17 +57,19 @@ import org.eclipse.aether.spi.connector.transport.PutTask;
import
org.eclipse.aether.spi.connector.transport.Transporter
;
import
org.eclipse.aether.spi.connector.transport.TransporterProvider
;
import
org.eclipse.aether.spi.io.FileProcessor
;
import
org.eclipse.aether.spi.log.Logger
;
import
org.eclipse.aether.transfer.ChecksumFailureException
;
import
org.eclipse.aether.transfer.NoRepositoryConnectorException
;
import
org.eclipse.aether.transfer.NoRepositoryLayoutException
;
import
org.eclipse.aether.transfer.NoTransporterException
;
import
org.eclipse.aether.transfer.TransferEvent
;
import
org.eclipse.aether.transfer.TransferResource
;
import
org.eclipse.aether.transform.FileTransformer
;
import
org.eclipse.aether.util.ChecksumUtils
;
import
org.eclipse.aether.util.ConfigUtils
;
import
org.eclipse.aether.util.concurrency.RunnableErrorForwarder
;
import
org.eclipse.aether.util.concurrency.WorkerThreadFactory
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
/**
*/
...
...
@@ -80,7 +85,7 @@ final class BasicRepositoryConnector
private
static
final
String
CONFIG_PROP_SMART_CHECKSUMS
=
"aether.connector.smartChecksums"
;
private
final
Logger
logger
;
private
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
BasicRepositoryConnector
.
class
)
;
private
final
FileProcessor
fileProcessor
;
...
...
@@ -108,8 +113,7 @@ final class BasicRepositoryConnector
BasicRepositoryConnector
(
RepositorySystemSession
session
,
RemoteRepository
repository
,
TransporterProvider
transporterProvider
,
RepositoryLayoutProvider
layoutProvider
,
ChecksumPolicyProvider
checksumPolicyProvider
,
FileProcessor
fileProcessor
,
Logger
logger
)
ChecksumPolicyProvider
checksumPolicyProvider
,
FileProcessor
fileProcessor
)
throws
NoRepositoryConnectorException
{
try
...
...
@@ -133,7 +137,6 @@ final class BasicRepositoryConnector
this
.
session
=
session
;
this
.
repository
=
repository
;
this
.
fileProcessor
=
fileProcessor
;
this
.
logger
=
logger
;
maxThreads
=
ConfigUtils
.
getInteger
(
session
,
5
,
CONFIG_PROP_THREADS
,
"maven.artifact.threads"
);
smartChecksums
=
ConfigUtils
.
getBoolean
(
session
,
true
,
CONFIG_PROP_SMART_CHECKSUMS
);
...
...
@@ -150,7 +153,7 @@ final class BasicRepositoryConnector
ConfigUtils
.
getInteger
(
session
,
ConfigurationProperties
.
DEFAULT_REQUEST_TIMEOUT
,
ConfigurationProperties
.
REQUEST_TIMEOUT
+
'.'
+
repository
.
getId
(),
ConfigurationProperties
.
REQUEST_TIMEOUT
);
partialFileFactory
=
new
PartialFile
.
Factory
(
resumeDownloads
,
resumeThreshold
,
requestTimeout
,
logger
);
partialFileFactory
=
new
PartialFile
.
Factory
(
resumeDownloads
,
resumeThreshold
,
requestTimeout
);
}
private
Executor
getExecutor
(
Collection
<?>
artifacts
,
Collection
<?>
metadatas
)
...
...
@@ -280,7 +283,7 @@ final class BasicRepositoryConnector
List
<
RepositoryLayout
.
Checksum
>
checksums
=
layout
.
getChecksums
(
transfer
.
getArtifact
(),
true
,
location
);
Runnable
task
=
new
PutTaskRunner
(
location
,
transfer
.
getFile
(),
checksums
,
listener
);
Runnable
task
=
new
PutTaskRunner
(
location
,
transfer
.
getFile
(),
transfer
.
getFileTransformer
(),
checksums
,
listener
);
task
.
run
();
}
...
...
@@ -403,7 +406,7 @@ final class BasicRepositoryConnector
super
(
path
,
listener
);
this
.
file
=
requireNonNull
(
file
,
"destination file cannot be null"
);
checksumValidator
=
new
ChecksumValidator
(
logger
,
file
,
fileProcessor
,
this
,
checksumPolicy
,
safe
(
checksums
)
);
new
ChecksumValidator
(
file
,
fileProcessor
,
this
,
checksumPolicy
,
safe
(
checksums
)
);
}
public
void
checkRemoteAccess
()
...
...
@@ -438,7 +441,7 @@ final class BasicRepositoryConnector
PartialFile
partFile
=
partialFileFactory
.
newInstance
(
file
,
this
);
if
(
partFile
==
null
)
{
logger
.
debug
(
"Concurrent download of
"
+
file
+
"
just finished, skipping download"
);
LOGGER
.
debug
(
"Concurrent download of
{}
just finished, skipping download"
,
file
);
return
;
}
...
...
@@ -496,24 +499,70 @@ final class BasicRepositoryConnector
private
final
File
file
;
private
final
FileTransformer
fileTransformer
;
private
final
Collection
<
RepositoryLayout
.
Checksum
>
checksums
;
PutTaskRunner
(
URI
path
,
File
file
,
List
<
RepositoryLayout
.
Checksum
>
checksums
,
TransferTransportListener
<?>
listener
)
{
this
(
path
,
file
,
null
,
checksums
,
listener
);
}
/**
* <strong>IMPORTANT</strong> When using a fileTransformer, the content of the file is stored in memory to
* ensure that file content and checksums stay in sync!
*
* @param path
* @param file
* @param fileTransformer
* @param checksums
* @param listener
*/
PutTaskRunner
(
URI
path
,
File
file
,
FileTransformer
fileTransformer
,
List
<
RepositoryLayout
.
Checksum
>
checksums
,
TransferTransportListener
<?>
listener
)
{
super
(
path
,
listener
);
this
.
file
=
requireNonNull
(
file
,
"source file cannot be null"
);
this
.
fileTransformer
=
fileTransformer
;
this
.
checksums
=
safe
(
checksums
);
}
protected
void
runTask
()
throws
Exception
{
if
(
fileTransformer
!=
null
)
{
// transform data once to byte array, ensure constant data for checksum
ByteArrayOutputStream
baos
=
new
ByteArrayOutputStream
();
byte
[]
buffer
=
new
byte
[
1024
];
try
(
InputStream
transformData
=
fileTransformer
.
transformData
(
file
)
)
{
for
(
int
read
;
(
read
=
transformData
.
read
(
buffer
,
0
,
buffer
.
length
)
)
!=
-
1
;
)
{
baos
.
write
(
buffer
,
0
,
read
);
}
}
byte
[]
bytes
=
baos
.
toByteArray
();
transporter
.
put
(
new
PutTask
(
path
).
setDataBytes
(
bytes
).
setListener
(
listener
)
);
uploadChecksums
(
file
,
bytes
,
path
);
}
else
{
transporter
.
put
(
new
PutTask
(
path
).
setDataFile
(
file
).
setListener
(
listener
)
);
uploadChecksums
(
file
,
path
);
uploadChecksums
(
file
,
null
,
path
);
}
}
private
void
uploadChecksums
(
File
file
,
URI
location
)
/**
*
* @param file source
* @param bytes transformed data from file or {@code null}
* @param location target
*/
private
void
uploadChecksums
(
File
file
,
byte
[]
bytes
,
URI
location
)
{
if
(
checksums
.
isEmpty
()
)
{
...
...
@@ -521,12 +570,22 @@ final class BasicRepositoryConnector
}
try
{
Set
<
String
>
algos
=
new
HashSet
<
String
>();
Set
<
String
>
algos
=
new
HashSet
<>();
for
(
RepositoryLayout
.
Checksum
checksum
:
checksums
)
{
algos
.
add
(
checksum
.
getAlgorithm
()
);
}
Map
<
String
,
Object
>
sumsByAlgo
=
ChecksumUtils
.
calc
(
file
,
algos
);
Map
<
String
,
Object
>
sumsByAlgo
;
if
(
bytes
!=
null
)
{
sumsByAlgo
=
ChecksumUtils
.
calc
(
bytes
,
algos
);
}
else
{
sumsByAlgo
=
ChecksumUtils
.
calc
(
file
,
algos
);
}
for
(
RepositoryLayout
.
Checksum
checksum
:
checksums
)
{
uploadChecksum
(
checksum
.
getLocation
(),
sumsByAlgo
.
get
(
checksum
.
getAlgorithm
()
)
);
...
...
@@ -535,13 +594,13 @@ final class BasicRepositoryConnector
catch
(
IOException
e
)
{
String
msg
=
"Failed to upload checksums for "
+
file
+
": "
+
e
.
getMessage
();
if
(
logger
.
isDebugEnabled
()
)
if
(
LOGGER
.
isDebugEnabled
()
)
{
logger
.
warn
(
msg
,
e
);
LOGGER
.
warn
(
msg
,
e
);
}
else
{
logger
.
warn
(
msg
);
LOGGER
.
warn
(
msg
);
}
}
}
...
...
@@ -559,13 +618,13 @@ final class BasicRepositoryConnector
catch
(
Exception
e
)
{
String
msg
=
"Failed to upload checksum "
+
location
+
": "
+
e
.
getMessage
();
if
(
logger
.
isDebugEnabled
()
)
if
(
LOGGER
.
isDebugEnabled
()
)
{
logger
.
warn
(
msg
,
e
);
LOGGER
.
warn
(
msg
,
e
);
}
else
{
logger
.
warn
(
msg
);
LOGGER
.
warn
(
msg
);
}
}
}
...
...
maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/BasicRepositoryConnectorFactory.java
View file @
e38d0010
...
...
@@ -34,9 +34,6 @@ import org.eclipse.aether.spi.connector.transport.TransporterProvider;
import
org.eclipse.aether.spi.io.FileProcessor
;
import
org.eclipse.aether.spi.locator.Service
;
import
org.eclipse.aether.spi.locator.ServiceLocator
;
import
org.eclipse.aether.spi.log.Logger
;
import
org.eclipse.aether.spi.log.LoggerFactory
;
import
org.eclipse.aether.spi.log.NullLoggerFactory
;
import
org.eclipse.aether.transfer.NoRepositoryConnectorException
;
/**
...
...
@@ -48,9 +45,6 @@ import org.eclipse.aether.transfer.NoRepositoryConnectorException;
public
final
class
BasicRepositoryConnectorFactory
implements
RepositoryConnectorFactory
,
Service
{
private
Logger
logger
=
NullLoggerFactory
.
LOGGER
;
private
TransporterProvider
transporterProvider
;
private
RepositoryLayoutProvider
layoutProvider
;
...
...
@@ -73,37 +67,22 @@ public final class BasicRepositoryConnectorFactory
@Inject
BasicRepositoryConnectorFactory
(
TransporterProvider
transporterProvider
,
RepositoryLayoutProvider
layoutProvider
,
ChecksumPolicyProvider
checksumPolicyProvider
,
FileProcessor
fileProcessor
,
LoggerFactory
loggerFactory
)
ChecksumPolicyProvider
checksumPolicyProvider
,
FileProcessor
fileProcessor
)
{
setTransporterProvider
(
transporterProvider
);
setRepositoryLayoutProvider
(
layoutProvider
);
setChecksumPolicyProvider
(
checksumPolicyProvider
);
setFileProcessor
(
fileProcessor
);
setLoggerFactory
(
loggerFactory
);
}
public
void
initService
(
ServiceLocator
locator
)
{
setLoggerFactory
(
locator
.
getService
(
LoggerFactory
.
class
)
);
setTransporterProvider
(
locator
.
getService
(
TransporterProvider
.
class
)
);
setRepositoryLayoutProvider
(
locator
.
getService
(
RepositoryLayoutProvider
.
class
)
);
setChecksumPolicyProvider
(
locator
.
getService
(
ChecksumPolicyProvider
.
class
)
);
setFileProcessor
(
locator
.
getService
(
FileProcessor
.
class
)
);
}
/**
* Sets the logger factory to use for this component.
*
* @param loggerFactory The logger factory to use, may be {@code null} to disable logging.
* @return This component for chaining, never {@code null}.
*/
public
BasicRepositoryConnectorFactory
setLoggerFactory
(
LoggerFactory
loggerFactory
)
{
this
.
logger
=
NullLoggerFactory
.
getSafeLogger
(
loggerFactory
,
BasicRepositoryConnector
.
class
);
return
this
;
}
/**
* Sets the transporter provider to use for this component.
*
...
...
@@ -173,7 +152,7 @@ public final class BasicRepositoryConnectorFactory
throws
NoRepositoryConnectorException
{
return
new
BasicRepositoryConnector
(
session
,
repository
,
transporterProvider
,
layoutProvider
,
checksumPolicyProvider
,
fileProcessor
,
logger
);
checksumPolicyProvider
,
fileProcessor
);
}
}
maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/ChecksumValidator.java
View file @
e38d0010
...
...
@@ -32,9 +32,10 @@ import java.util.UUID;
import
org.eclipse.aether.spi.connector.checksum.ChecksumPolicy
;
import
org.eclipse.aether.spi.connector.layout.RepositoryLayout.Checksum
;
import
org.eclipse.aether.spi.io.FileProcessor
;
import
org.eclipse.aether.spi.log.Logger
;
import
org.eclipse.aether.transfer.ChecksumFailureException
;
import
org.eclipse.aether.util.ChecksumUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
/**
* Performs checksum validation for a downloaded file.
...
...
@@ -50,7 +51,7 @@ final class ChecksumValidator
}
private
final
Logger
logger
;
private
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
ChecksumValidator
.
class
)
;
private
final
File
dataFile
;
...
...
@@ -66,11 +67,10 @@ final class ChecksumValidator
private
final
Map
<
File
,
Object
>
checksumFiles
;
ChecksumValidator
(
Logger
logger
,
File
dataFile
,
FileProcessor
fileProcessor
,
ChecksumValidator
(
File
dataFile
,
FileProcessor
fileProcessor
,
ChecksumFetcher
checksumFetcher
,
ChecksumPolicy
checksumPolicy
,
Collection
<
Checksum
>
checksums
)
{
this
.
logger
=
logger
;
this
.
dataFile
=
dataFile
;
this
.
tempFiles
=
new
HashSet
<
File
>();
this
.
fileProcessor
=
fileProcessor
;
...
...
@@ -213,7 +213,7 @@ final class ChecksumValidator
{
if
(
!
file
.
delete
()
&&
file
.
exists
()
)
{
logger
.
debug
(
"Could not delete temorary file
"
+
file
);
LOGGER
.
debug
(
"Could not delete tem
p
orary file
{}"
,
file
);
}
}
tempFiles
.
clear
();
...
...
@@ -251,7 +251,7 @@ final class ChecksumValidator
}
catch
(
IOException
e
)
{
logger
.
debug
(
"Failed to write checksum file
"
+
checksumFile
+
": "
+
e
.
getMessage
(),
e
);
LOGGER
.
debug
(
"Failed to write checksum file
{}: {}"
,
checksumFile
,
e
.
getMessage
(),
e
);
}
}
checksumFiles
.
clear
();
...
...
maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/PartialFile.java
View file @
e38d0010
...
...
@@ -19,6 +19,9 @@ package org.eclipse.aether.connector.basic;
* under the License.
*/
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
java.io.Closeable
;
import
java.io.File
;
import
java.io.IOException
;
...
...
@@ -29,8 +32,6 @@ import java.nio.channels.OverlappingFileLockException;
import
java.util.UUID
;
import
java.util.concurrent.atomic.AtomicBoolean
;
import
org.eclipse.aether.spi.log.Logger
;
/**
* A partially downloaded file with optional support for resume. If resume is enabled, a well-known location is used for
* the partial file in combination with a lock file to prevent concurrent requests from corrupting it (and wasting
...
...
@@ -61,16 +62,16 @@ final class PartialFile
private
final
AtomicBoolean
concurrent
;
LockFile
(
File
partFile
,
int
requestTimeout
,
RemoteAccessChecker
checker
,
Logger
logger
)
LockFile
(
File
partFile
,
int
requestTimeout
,
RemoteAccessChecker
checker
)
throws
Exception
{
lockFile
=
new
File
(
partFile
.
getPath
()
+
EXT_LOCK
);
concurrent
=
new
AtomicBoolean
(
false
);
lock
=
lock
(
lockFile
,
partFile
,
requestTimeout
,
checker
,
logger
,
concurrent
);
lock
=
lock
(
lockFile
,
partFile
,
requestTimeout
,
checker
,
concurrent
);
}
private
static
FileLock
lock
(
File
lockFile
,
File
partFile
,
int
requestTimeout
,
RemoteAccessChecker
checker
,
Logger
logger
,
AtomicBoolean
concurrent
)
AtomicBoolean
concurrent
)
throws
Exception
{
boolean
interrupted
=
false
;
...
...
@@ -97,7 +98,7 @@ final class PartialFile
* at least knows about the file and is accessible to us.
*/
checker
.
checkRemoteAccess
();
logger
.
debug
(
"Concurrent download of
"
+
partFile
+
"
in progress, awaiting completion"
);
LOGGER
.
debug
(
"Concurrent download of
{}
in progress, awaiting completion"
,
partFile
);
}
lastLength
=
currentLength
;
lastTime
=
currentTime
;
...
...
@@ -257,14 +258,13 @@ final class PartialFile
private
final
int
requestTimeout
;
private
final
Logger
logger
;
private
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
Factory
.
class
)
;
Factory
(
boolean
resume
,
long
resumeThreshold
,
int
requestTimeout
,
Logger
logger
)
Factory
(
boolean
resume
,
long
resumeThreshold
,
int
requestTimeout
)
{
this
.
resume
=
resume
;
this
.
resumeThreshold
=
resumeThreshold
;
this
.
requestTimeout
=
requestTimeout
;
this
.
logger
=
logger
;
}
public
PartialFile
newInstance
(
File
dstFile
,
RemoteAccessChecker
checker
)
...
...
@@ -275,7 +275,7 @@ final class PartialFile
File
partFile
=
new
File
(
dstFile
.
getPath
()
+
EXT_PART
);
long
reqTimestamp
=
System
.
currentTimeMillis
();
LockFile
lockFile
=
new
LockFile
(
partFile
,
requestTimeout
,
checker
,
logger
);
LockFile
lockFile
=
new
LockFile
(
partFile
,
requestTimeout
,
checker
);
if
(
lockFile
.
isConcurrent
()
&&
dstFile
.
lastModified
()
>=
reqTimestamp
-
100L
)
{
lockFile
.
close
();
...
...
@@ -287,12 +287,12 @@ final class PartialFile
{
throw
new
IOException
(
partFile
.
exists
()
?
"Path exists but is not a file"
:
"Unknown error"
);
}
return
new
PartialFile
(
partFile
,
lockFile
,
resumeThreshold
,
logger
);
return
new
PartialFile
(
partFile
,
lockFile
,
resumeThreshold
);
}
catch
(
IOException
e
)
{
lockFile
.
close
();
logger
.
debug
(
"Cannot create resumable file
"
+
partFile
.
getAbsolutePath
()
+
": "
+
e
);
LOGGER
.
debug
(
"Cannot create resumable file
{}: {}"
,
partFile
.
getAbsolutePath
()
,
e
.
getMessage
(),
e
);
// fall through and try non-resumable/temporary file location
}
}
...
...
@@ -300,7 +300,7 @@ final class PartialFile
File
tempFile
=
File
.
createTempFile
(
dstFile
.
getName
()
+
'-'
+
UUID
.
randomUUID
().
toString
().
replace
(
"-"
,
""
),
".tmp"
,
dstFile
.
getParentFile
()
);
return
new
PartialFile
(
tempFile
,
logger
);
return
new
PartialFile
(
tempFile
);
}
}
...
...
@@ -311,19 +311,18 @@ final class PartialFile
private
final
long
threshold
;
private
final
Logger
logger
;
private
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
PartialFile
.
class
)
;
private
PartialFile
(
File
partFile
,
Logger
logger
)
private
PartialFile
(
File
partFile
)
{
this
(
partFile
,
null
,
0L
,
logger
);
this
(
partFile
,
null
,
0L
);
}
private
PartialFile
(
File
partFile
,
LockFile
lockFile
,
long
threshold
,
Logger
logger
)
private
PartialFile
(
File
partFile
,
LockFile
lockFile
,
long
threshold
)
{
this
.
partFile
=
partFile
;
this
.
lockFile
=
lockFile
;
this
.
threshold
=
threshold
;
this
.
logger
=
logger
;
}
public
File
getFile
()
...
...
@@ -342,7 +341,7 @@ final class PartialFile
{
if
(
!
partFile
.
delete
()
&&
partFile
.
exists
()
)
{
logger
.
debug
(
"Could not delete temorary file
"
+
partFile
);
LOGGER
.
debug
(
"Could not delete tem
p
orary file
{}"
,
partFile
);
}
}
if
(
lockFile
!=
null
)
...
...
maven-resolver-connector-basic/src/test/java/org/eclipse/aether/connector/basic/ChecksumValidatorTest.java
View file @
e38d0010
...
...
@@ -33,7 +33,6 @@ import java.util.Map;
import
org.eclipse.aether.internal.test.util.TestFileProcessor
;
import
org.eclipse.aether.internal.test.util.TestFileUtils
;
import
org.eclipse.aether.internal.test.util.TestLoggerFactory
;
import
org.eclipse.aether.spi.connector.checksum.ChecksumPolicy
;
import
org.eclipse.aether.spi.connector.layout.RepositoryLayout
;
import
org.eclipse.aether.transfer.ChecksumFailureException
;
...
...
@@ -196,8 +195,7 @@ public class ChecksumValidatorTest
private
ChecksumValidator
newValidator
(
String
...
algos
)
{
return
new
ChecksumValidator
(
new
TestLoggerFactory
().
getLogger
(
""
),
dataFile
,
new
TestFileProcessor
(),
fetcher
,
policy
,
newChecksums
(
algos
)
);
return
new
ChecksumValidator
(
dataFile
,
new
TestFileProcessor
(),
fetcher
,
policy
,
newChecksums
(
algos
)
);
}
private
Map
<
String
,
?>
checksums
(
String
...
algoDigestPairs
)
...
...
maven-resolver-connector-basic/src/test/java/org/eclipse/aether/connector/basic/PartialFileTest.java
View file @
e38d0010
...
...
@@ -35,7 +35,6 @@ import java.util.Locale;
import
java.util.concurrent.CountDownLatch
;
import
org.eclipse.aether.internal.test.util.TestFileUtils
;
import
org.eclipse.aether.internal.test.util.TestLoggerFactory
;
import
org.junit.After
;
import
org.junit.Before
;
import
org.junit.Test
;
...
...
@@ -212,8 +211,7 @@ public class PartialFileTest
throws
Exception
{
PartialFile
.
Factory
factory
=
new
PartialFile
.
Factory
(
resumeThreshold
>=
0L
,
resumeThreshold
,
requestTimeout
,
new
TestLoggerFactory
().
getLogger
(
""
)
);
new
PartialFile
.
Factory
(
resumeThreshold
>=
0L
,
resumeThreshold
,
requestTimeout
);
PartialFile
partFile
=
factory
.
newInstance
(
dstFile
,
remoteAccessChecker
);
if
(
partFile
!=
null
)
{
...
...
maven-resolver-demos/maven-resolver-demo-maven-plugin/pom.xml
View file @
e38d0010
...
...
@@ -25,7 +25,7 @@
<parent>
<groupId>
org.apache.maven.resolver
</groupId>
<artifactId>
maven-resolver-demos
</artifactId>
<version>
1.
1
.1
</version>
<version>
1.
3
.1
</version>
</parent>
<artifactId>
maven-resolver-demo-maven-plugin
</artifactId>
...
...
@@ -70,8 +70,15 @@
<artifactId>
maven-resolver-api
</artifactId>
</dependency>
<dependency>
<groupId>
org.apache.maven.resolver
</groupId>
<artifactId>
maven-resolver-util
</artifactId>
<groupId>
org.apache.maven.plugin-tools
</groupId>
<artifactId>
maven-plugin-annotations
</artifactId>
<scope>
provided
</scope>
<optional>
true
</optional>
</dependency>
<dependency>
<groupId>
org.slf4j
</groupId>
<artifactId>
slf4j-api
</artifactId>
<scope>
provided
</scope>
</dependency>
</dependencies>
...
...
@@ -98,6 +105,10 @@
<goal>
clean
</goal>
<goal>
validate
</goal>
</goals>
<properties>
<!-- e.g. ensure that Java7 picks up TLSv1.2 when connecting with Central -->
<https.protocols>
${https.protocols}
</https.protocols>
</properties>
</configuration>
<executions>
<execution>
...
...
maven-resolver-demos/maven-resolver-demo-maven-plugin/src/main/java/org/apache/maven/resolver/examples/maven/ResolveArtifactMojo.java
View file @
e38d0010
...
...
@@ -24,6 +24,9 @@ import java.util.List;
import
org.apache.maven.plugin.AbstractMojo
;
import
org.apache.maven.plugin.MojoExecutionException
;
import
org.apache.maven.plugin.MojoFailureException
;
import
org.apache.maven.plugins.annotations.Component
;
import
org.apache.maven.plugins.annotations.Mojo
;
import
org.apache.maven.plugins.annotations.Parameter
;
import
org.eclipse.aether.RepositorySystem
;
import
org.eclipse.aether.RepositorySystemSession
;
import
org.eclipse.aether.artifact.Artifact
;
...
...
@@ -32,44 +35,39 @@ import org.eclipse.aether.repository.RemoteRepository;
import
org.eclipse.aether.resolution.ArtifactRequest
;
import
org.eclipse.aether.resolution.ArtifactResolutionException
;
import
org.eclipse.aether.resolution.ArtifactResult
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
/**
* Resolves a single artifact (not including its transitive dependencies).
*
* @goal resolve-artifact
*/
@Mojo
(
name
=
"resolve-artifact"
,
threadSafe
=
true
)
public
class
ResolveArtifactMojo
extends
AbstractMojo
{
private
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
ResolveArtifactMojo
.
class
);
/**
* The entry point to Maven Artifact Resolver, i.e. the component doing all the work.
*
* @component
*/
@Component
private
RepositorySystem
repoSystem
;
/**
* The current repository/network configuration of Maven.
*
* @parameter default-value="${repositorySystemSession}"
* @readonly
*/
@Parameter
(
defaultValue
=
"${repositorySystemSession}"
,
readonly
=
true
)
private
RepositorySystemSession
repoSession
;
/**
* The project's remote repositories to use for the resolution.
*
* @parameter default-value="${project.remoteProjectRepositories}"
* @readonly
*/
@Parameter
(
defaultValue
=
"${project.remotePluginRepositories}"
,
readonly
=
true
)
private
List
<
RemoteRepository
>
remoteRepos
;
/**
* The {@code <groupId>:<artifactId>[:<extension>[:<classifier>]]:<version>} of the artifact to resolve.
*
* @parameter property="resolver.artifactCoords"
*/
@Parameter
(
property
=
"resolver.artifactCoords"
,
readonly
=
true
)
private
String
artifactCoords
;
/**
...
...
@@ -92,7 +90,7 @@ public class ResolveArtifactMojo
request
.
setArtifact
(
artifact
);
request
.
setRepositories
(
remoteRepos
);
getLog
()
.
info
(
"Resolving artifact
"
+
artifact
+
" from "
+
remoteRepos
);
LOGGER
.
info
(
"Resolving artifact
{} from {}"
,
artifact
,
remoteRepos
);
ArtifactResult
result
;
try
...
...
@@ -104,8 +102,8 @@ public class ResolveArtifactMojo
throw
new
MojoExecutionException
(
e
.
getMessage
(),
e
);
}
getLog
()
.
info
(
"Resolved artifact
"
+
artifact
+
" to "
+
result
.
getArtifact
().
getFile
()
+
" from "
+
result
.
getRepository
()
);
LOGGER
.
info
(
"Resolved artifact
{} to {} from {}"
,
artifact
,
result
.
getArtifact
().
getFile
()
,
result
.
getRepository
()
);
}
}
maven-resolver-demos/maven-resolver-demo-snippets/pom.xml
View file @
e38d0010
...
...
@@ -25,7 +25,7 @@
<parent>
<groupId>
org.apache.maven.resolver
</groupId>
<artifactId>
maven-resolver-demos
</artifactId>
<version>
1.
1
.1
</version>
<version>
1.
3
.1
</version>
</parent>
<artifactId>
maven-resolver-demo-snippets
</artifactId>
...
...
@@ -37,6 +37,7 @@
</description>
<properties>
<Automatic-Module-Name>
org.apache.maven.resolver.demo.snippets
</Automatic-Module-Name>
<mavenVersion>
3.5.0
</mavenVersion>
</properties>
...
...
@@ -90,21 +91,32 @@
<version>
${mavenVersion}
</version>
</dependency>
<dependency>
<groupId>
org.eclipse.sisu
</groupId>
<artifactId>
org.eclipse.sisu.plexus
</artifactId>
<version>
${sisuVersion}
</version>
<optional>
true
</optional>
<groupId>
org.apache.maven
</groupId>
<artifactId>
maven-model-builder
</artifactId>
<version>
${mavenVersion}
</version>
</dependency>
<dependency>
<groupId>
javax.inject
</groupId>
<artifactId>
javax.inject
</artifactId>
</dependency>
<dependency>
<groupId>
org.eclipse.sisu
</groupId>
<artifactId>
org.eclipse.sisu.inject
</artifactId>
</dependency>
<dependency>
<groupId>
org.sonatype.sisu
</groupId>
<artifactId>
sisu-guice
</artifactId>
<version>
3.2.6
</version>
<classifier>
no_aop
</classifier>
<optional>
true
</optional>
</dependency>
<dependency>
<groupId>
org.slf4j
</groupId>
<artifactId>
slf4j-api
</artifactId>
</dependency>
<dependency>
<groupId>
org.slf4j
</groupId>
<artifactId>
slf4j-simple
</artifactId>
<scope>
test
</scope>
</dependency>
</dependencies>
</project>
Prev
1
2
3
4
5
6
Next