Um abschließend die Titelfrage zu beantworten: Es ist (eine clientseitige Einstellung) in (Projekt, Profil oder Einstellungen)
[plugin]?[r|R]epository/[releases|snapshots]/updatePolicy
... Tag.
Die (derzeit, maven: 3.6.0, aber ich nehme an "weit rückwärts" kompatibel) möglichen Werte sind :
/**
* Never update locally cached data.
*/
public static final String UPDATE_POLICY_NEVER = "never";
/**
* Always update locally cached data.
*/
public static final String UPDATE_POLICY_ALWAYS = "always";
/**
* Update locally cached data once a day.
*/
public static final String UPDATE_POLICY_DAILY = "daily";
/**
* Update locally cached data **every X minutes** as given by "interval:X".
*/
public static final String UPDATE_POLICY_INTERVAL = "interval";
Die aktuelle (Maven 3.6.0) Auswertung dieses Tags ist wie folgt implementiert:
public boolean isUpdatedRequired( RepositorySystemSession session, long lastModified, String policy )
{
boolean checkForUpdates;
if ( policy == null )
{
policy = "";
}
if ( RepositoryPolicy.UPDATE_POLICY_ALWAYS.equals( policy ) )
{
checkForUpdates = true;
}
else if ( RepositoryPolicy.UPDATE_POLICY_DAILY.equals( policy ) )
{
Calendar cal = Calendar.getInstance();
cal.set( Calendar.HOUR_OF_DAY, 0 );
cal.set( Calendar.MINUTE, 0 );
cal.set( Calendar.SECOND, 0 );
cal.set( Calendar.MILLISECOND, 0 );
checkForUpdates = cal.getTimeInMillis() > lastModified;
}
else if ( policy.startsWith( RepositoryPolicy.UPDATE_POLICY_INTERVAL ) )
{
int minutes = getMinutes( policy );
Calendar cal = Calendar.getInstance();
cal.add( Calendar.MINUTE, -minutes );
checkForUpdates = cal.getTimeInMillis() > lastModified;
}
else
{
// assume "never"
checkForUpdates = false;
if ( !RepositoryPolicy.UPDATE_POLICY_NEVER.equals( policy ) )
{
LOGGER.warn( "Unknown repository update policy '{}', assuming '{}'",
policy, RepositoryPolicy.UPDATE_POLICY_NEVER );
}
}
return checkForUpdates;
}
mit:
private int getMinutes( String policy )
{
int minutes;
try
{
String s = policy.substring( RepositoryPolicy.UPDATE_POLICY_INTERVAL.length() + 1 );
minutes = Integer.valueOf( s );
}
catch ( RuntimeException e )
{
minutes = 24 * 60;
LOGGER.warn( "Non-parseable repository update policy '{}', assuming '{}:1440'",
policy, RepositoryPolicy.UPDATE_POLICY_INTERVAL );
}
return minutes;
}
...wo lastModified
ist der (lokale Datei-) "Änderungszeitstempel" eines/jeder zugrunde liegenden Artefakts.
Insbesondere für die interval:x
Umgebung:
- der Dickdarm
:
ist nicht so streng - jedes "nicht leere" Zeichen könnte es tun ( =
, , ...).
- negative Werte
x < 0
sollte auf "niemals" umgestellt werden.
interval:0
Ich würde von einem "minütlichen" Intervall (0-59 Sek. oder mehr...) ausgehen.
- Ausnahmen beim Zahlenformat führen zu
24 * 60
Minuten (~"täglich").
..siehe: DefaultUpdatePolicyAnalyzer , DefaultMetadataResolver#resolveMetadata() y RepositoryPolicy
42 Stimmen
Ich erhielt die gleiche Fehlermeldung nach dem Hinzufügen von 1 weiteren Abhängigkeit zu meiner pom.xml. Für mich ist das eindeutig ein BUG. Ich verstehe nicht, warum das passiert! Wenn ich Abhängigkeiten zu meinem Projekt hinzufüge und mvn compile ausführe, dann sollte es einfach die Jar-Dateien herunterladen. Dieses Verhalten ist völlig unsinnig!
3 Stimmen
Zugehörige stackoverflow.com/questions/4701532/force-maven-update
2 Stimmen
Ich habe erst kürzlich diese Erfahrung gemacht, und nach all den Antworten, die ich gelesen habe, ist ein weiterer zusätzlicher Schritt das Projekt erneut importieren in Eclipse (in meinem Fall). Es war zu seltsam, dass Eclipse mich ständig mit einem Plugin nervte, das nicht in meinem
pom.xml
.1 Stimmen
Eine wichtige Frage für mich!! Danke Kumpel!
0 Stimmen
Bei mir stellte sich heraus, dass ein bestimmtes Repo mit GitHub verlinkt war und die Url offline ging (404). Ich aktualisierte das Repo auf unseren internen Server und es funktionierte.
0 Stimmen
Ich habe die Version in pom.xml geändert. Dann jar heruntergeladen und arbeiten.