Did the spam filter consume my previous post from yesterday?
Anyway I have an issue where username and password provided to the liquibase maven plugin is always overwritten by the server settings in maven. See http://liquibase.jira.com/browse/CORE-784
In liquibase maven plugin class AbstractLiquibaseMojo on line 230:
-
AuthenticationInfo info = wagonManager.getAuthenticationInfo( server );
if ( info != null ) {
username = info.getUserName();
password = info.getPassword();
}
In maven 2.0 DefaultWagonManager the above logic works as the AuthenticationInfo is retrieved from a map thereby returning null if we have not defined the server:
- public AuthenticationInfo getAuthenticationInfo( String id )
{
return (AuthenticationInfo) authenticationInfoMap.get( id );
}
Running the plugin from eclipse using an external maven 3.0.1 installation it will use DefaultWagonManager from maven-compat-3.0.1.jar. There the implementation has changed to:
- public AuthenticationInfo getAuthenticationInfo( String id )
{
MavenSession session = legacySupport.getSession();
if ( session != null && id != null )
{
MavenExecutionRequest request = session.getRequest();
if ( request != null )
{
List servers = request.getServers();
if ( servers != null )
{
for ( Server server : servers )
{
if ( id.equalsIgnoreCase( server.getId() ) )
{
... SNIP ...
return authInfo;
}
}
}
}
}
// empty one to prevent NPE
return new AuthenticationInfo();
}
So it will always return a non null value meaning the plugin logic is broken.