Skip to content

Commit 39024f1

Browse files
committed
Improve compatibility handling
If one scijava.* property is set, ignore imagej.* properties entirely.
1 parent 6b5cd6b commit 39024f1

File tree

4 files changed

+122
-154
lines changed

4 files changed

+122
-154
lines changed

src/it/delete-other-versions-property-false/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
<name>An example ImageJ 1.x plugin to test scijava-maven-plugin's CopyJarsMojo</name>
4040

4141
<properties>
42-
<scijava.app.directory>${project.basedir}/target/ImageJ.app/</scijava.app.directory>
42+
<imagej.app.directory>${project.basedir}/target/ImageJ.app/</imagej.app.directory>
4343
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
4444
<delete.other.versions>false</delete.other.versions>
4545
</properties>

src/it/delete-other-versions-property-true/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
<name>An example ImageJ 1.x plugin to test scijava-maven-plugin's CopyJarsMojo</name>
4040

4141
<properties>
42-
<scijava.app.directory>${project.basedir}/target/ImageJ.app/</scijava.app.directory>
42+
<imagej.app.directory>${project.basedir}/target/ImageJ.app/</imagej.app.directory>
4343
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
4444
<delete.other.versions>true</delete.other.versions>
4545
</properties>

src/main/java/org/scijava/maven/plugin/install/CopyJarsMojo.java

Lines changed: 60 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -181,82 +181,8 @@ public class CopyJarsMojo extends AbstractCopyJarsMojo {
181181

182182
@Override
183183
public void execute() throws MojoExecutionException {
184-
ExpressionEvaluator evaluator = new PluginParameterExpressionEvaluator(session, mojoExecution);
185-
186-
// Keep backwards compatibility to delete.other.versions
187-
try {
188-
Object evaluate = evaluator.evaluate("${"+deleteOtherVersionsProperty+"}");
189-
if (evaluate != null) {
190-
getLog().warn("Property '" + deleteOtherVersionsProperty + "' is deprecated. Use '"+ deleteOtherVersionsPolicyProperty +"' instead");
191-
deleteOtherVersionsPolicy = deleteOtherVersions ? OtherVersions.older : OtherVersions.never;
192-
}
193-
}
194-
catch (ExpressionEvaluationException e) {
195-
getLog().warn(e);
196-
}
197-
198-
// Keep backwards compatibility to imagej.app.directory
199-
try {
200-
Object evaluate = evaluator.evaluate("${"+imagejDirectoryProperty+"}");
201-
202-
// Use imagejDirectory if it is set (directly or via imagej.app.directory)
203-
if (imagejDirectory != null) {
204-
if (evaluate == null) {
205-
getLog().warn("Configuration property 'imagejDirectory' is deprecated. Use 'appDirectory' instead");
206-
} else {
207-
getLog().warn("Property '" + imagejDirectoryProperty + "' is deprecated. Use '"+ appDirectoryProperty +"' instead");
208-
}
209-
210-
// TODO How do we want to handle cases where both are provided. Which
211-
// property should take precedence?
212-
appDirectory = imagejDirectory;
213-
}
214-
}
215-
catch (ExpressionEvaluationException e) {
216-
getLog().warn(e);
217-
}
218-
219-
// Keep backwards compatibility to imagej.app.subdirectory
220-
try {
221-
Object evaluate = evaluator.evaluate("${"+imagejSubdirectoryProperty+"}");
222-
223-
// Use imagejSubdirectory if it is set (directly or via imagej.app.subdirectory)
224-
if (imagejSubdirectory != null) {
225-
if (evaluate == null) {
226-
getLog().warn("Configuration property 'imagejSubdirectory' is deprecated. Use 'appSubdirectory' instead");
227-
} else {
228-
getLog().warn("Property '" + imagejSubdirectoryProperty + "' is deprecated. Use '"+ appSubdirectoryProperty +"' instead");
229-
}
230-
231-
// TODO How do we want to handle cases where both are provided. Which
232-
// property should take precedence?
233-
appSubdirectory = imagejSubdirectory;
234-
}
235-
}
236-
catch (ExpressionEvaluationException e) {
237-
getLog().warn(e);
238-
}
239-
240-
// Keep backwards compatibility to imagej.deleteOtherVersions
241-
try {
242-
Object evaluate = evaluator.evaluate("${"+imagejDeleteOtherVersionsPolicyProperty+"}");
243-
244-
// Use imagejDeleteOtherVersionsPolicy if it is set (directly or via imagej.deleteOtherVersions)
245-
if (imagejDeleteOtherVersionsPolicy != null) {
246-
if (evaluate == null) {
247-
getLog().warn("Configuration property 'imagejDeleteOtherVersionsPolicy' is deprecated. Use 'deleteOtherVersionsPolicy' instead");
248-
} else {
249-
getLog().warn("Property '" + imagejDeleteOtherVersionsPolicyProperty + "' is deprecated. Use '"+ deleteOtherVersionsPolicyProperty +"' instead");
250-
}
251-
252-
// TODO How do we want to handle cases where both are provided. Which
253-
// property should take precedence?
254-
deleteOtherVersionsPolicy = imagejDeleteOtherVersionsPolicy;
255-
}
256-
}
257-
catch (ExpressionEvaluationException e) {
258-
getLog().warn(e);
259-
}
184+
// Keep backwards compatibility
185+
handleBackwardsCompatibility();
260186

261187
if (appDirectory == null) {
262188
if (hasIJ1Dependency(project)) getLog().info(
@@ -315,4 +241,62 @@ public void execute() throws MojoExecutionException {
315241
"Couldn't resolve dependencies for artifact: " + e.getMessage(), e);
316242
}
317243
}
244+
245+
/**
246+
* TODO Javadoc
247+
*/
248+
private void handleBackwardsCompatibility() {
249+
ExpressionEvaluator evaluator = new PluginParameterExpressionEvaluator(session, mojoExecution);
250+
251+
try {
252+
// If at least one scijava.* property is set, ignore imagej.* properties
253+
if (evaluator.evaluate("${" + appDirectoryProperty + "}") == null &&
254+
evaluator.evaluate("${" + appSubdirectoryProperty + "}") == null &&
255+
evaluator.evaluate("${" + deleteOtherVersionsPolicyProperty + "}") == null)
256+
{
257+
258+
// Keep backwards compatibility to delete.other.versions
259+
if (evaluator.evaluate("${"+deleteOtherVersionsProperty+"}") != null) {
260+
getLog().warn("Property '" + deleteOtherVersionsProperty + "' is deprecated. Use '"+ deleteOtherVersionsPolicyProperty +"' instead");
261+
deleteOtherVersionsPolicy = deleteOtherVersions ? OtherVersions.older : OtherVersions.never;
262+
}
263+
264+
// Keep backwards compatibility to imagej.app.directory
265+
// Use imagejDirectory if it is set (directly or via imagej.app.directory)
266+
if (imagejDirectory != null) {
267+
if (evaluator.evaluate("${"+imagejDirectoryProperty+"}") == null) {
268+
getLog().warn("Configuration property 'imagejDirectory' is deprecated. Use 'appDirectory' instead");
269+
} else {
270+
getLog().warn("Property '" + imagejDirectoryProperty + "' is deprecated. Use '"+ appDirectoryProperty +"' instead");
271+
}
272+
appDirectory = imagejDirectory;
273+
}
274+
275+
// Keep backwards compatibility to imagej.app.subdirectory
276+
// Use imagejSubdirectory if it is set (directly or via imagej.app.subdirectory)
277+
if (imagejSubdirectory != null) {
278+
if (evaluator.evaluate("${"+imagejSubdirectoryProperty+"}") == null) {
279+
getLog().warn("Configuration property 'imagejSubdirectory' is deprecated. Use 'appSubdirectory' instead");
280+
} else {
281+
getLog().warn("Property '" + imagejSubdirectoryProperty + "' is deprecated. Use '"+ appSubdirectoryProperty +"' instead");
282+
}
283+
appSubdirectory = imagejSubdirectory;
284+
}
285+
286+
// Keep backwards compatibility to imagej.deleteOtherVersions
287+
// Use imagejDeleteOtherVersionsPolicy if it is set (directly or via imagej.deleteOtherVersions)
288+
if (imagejDeleteOtherVersionsPolicy != null) {
289+
if (evaluator.evaluate("${"+imagejDeleteOtherVersionsPolicyProperty+"}") == null) {
290+
getLog().warn("Configuration property 'imagejDeleteOtherVersionsPolicy' is deprecated. Use 'deleteOtherVersionsPolicy' instead");
291+
} else {
292+
getLog().warn("Property '" + imagejDeleteOtherVersionsPolicyProperty + "' is deprecated. Use '"+ deleteOtherVersionsPolicyProperty +"' instead");
293+
}
294+
deleteOtherVersionsPolicy = imagejDeleteOtherVersionsPolicy;
295+
}
296+
}
297+
}
298+
catch (ExpressionEvaluationException e) {
299+
getLog().warn(e);
300+
}
301+
}
318302
}

src/main/java/org/scijava/maven/plugin/install/InstallArtifactMojo.java

Lines changed: 60 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -273,82 +273,8 @@ public class InstallArtifactMojo extends AbstractCopyJarsMojo {
273273

274274
@Override
275275
public void execute() throws MojoExecutionException, MojoFailureException {
276-
ExpressionEvaluator evaluator = new PluginParameterExpressionEvaluator(session, mojoExecution);
277-
278-
// Keep backwards compatibility to delete.other.versions
279-
try {
280-
Object evaluate = evaluator.evaluate("${"+deleteOtherVersionsProperty+"}");
281-
if (evaluate != null) {
282-
getLog().warn("Property '" + deleteOtherVersionsProperty + "' is deprecated. Use '"+ deleteOtherVersionsPolicyProperty +"' instead");
283-
deleteOtherVersionsPolicy = deleteOtherVersions ? OtherVersions.older : OtherVersions.never;
284-
}
285-
}
286-
catch (ExpressionEvaluationException e) {
287-
getLog().warn(e);
288-
}
289-
290-
// Keep backwards compatibility to imagej.app.directory
291-
try {
292-
Object evaluate = evaluator.evaluate("${"+imagejDirectoryProperty+"}");
293-
294-
// Use imagejDirectory if it is set (directly or via imagej.app.directory)
295-
if (imagejDirectory != null) {
296-
if (evaluate == null) {
297-
getLog().warn("Configuration property 'imagejDirectory' is deprecated. Use 'appDirectory' instead");
298-
} else {
299-
getLog().warn("Property '" + imagejDirectoryProperty + "' is deprecated. Use '"+ appDirectoryProperty +"' instead");
300-
}
301-
302-
// TODO How do we want to handle cases where both are provided. Which
303-
// property should take precedence?
304-
appDirectory = imagejDirectory;
305-
}
306-
}
307-
catch (ExpressionEvaluationException e) {
308-
getLog().warn(e);
309-
}
310-
311-
// Keep backwards compatibility to imagej.app.subdirectory
312-
try {
313-
Object evaluate = evaluator.evaluate("${"+imagejSubdirectoryProperty+"}");
314-
315-
// Use imagejSubdirectory if it is set (directly or via imagej.app.subdirectory)
316-
if (imagejSubdirectory != null) {
317-
if (evaluate == null) {
318-
getLog().warn("Configuration property 'imagejSubdirectory' is deprecated. Use 'appSubdirectory' instead");
319-
} else {
320-
getLog().warn("Property '" + imagejSubdirectoryProperty + "' is deprecated. Use '"+ appSubdirectoryProperty +"' instead");
321-
}
322-
323-
// TODO How do we want to handle cases where both are provided. Which
324-
// property should take precedence?
325-
appSubdirectory = imagejSubdirectory;
326-
}
327-
}
328-
catch (ExpressionEvaluationException e) {
329-
getLog().warn(e);
330-
}
331-
332-
// Keep backwards compatibility to imagej.deleteOtherVersions
333-
try {
334-
Object evaluate = evaluator.evaluate("${"+imagejDeleteOtherVersionsPolicyProperty+"}");
335-
336-
// Use imagejDeleteOtherVersionsPolicy if it is set (directly or via imagej.deleteOtherVersions)
337-
if (imagejDeleteOtherVersionsPolicy != null) {
338-
if (evaluate == null) {
339-
getLog().warn("Configuration property 'imagejDeleteOtherVersionsPolicy' is deprecated. Use 'deleteOtherVersionsPolicy' instead");
340-
} else {
341-
getLog().warn("Property '" + imagejDeleteOtherVersionsPolicyProperty + "' is deprecated. Use '"+ deleteOtherVersionsPolicyProperty +"' instead");
342-
}
343-
344-
// TODO How do we want to handle cases where both are provided. Which
345-
// property should take precedence?
346-
deleteOtherVersionsPolicy = imagejDeleteOtherVersionsPolicy;
347-
}
348-
}
349-
catch (ExpressionEvaluationException e) {
350-
getLog().warn(e);
351-
}
276+
// Keep backwards compatibility
277+
handleBackwardsCompatibility();
352278

353279
if (appDirectory == null) {
354280
throw new MojoExecutionException(
@@ -443,6 +369,64 @@ public boolean accept(Node node, List<Node> parents) {
443369
}
444370
}
445371

372+
/**
373+
* TODO Javadoc
374+
*/
375+
private void handleBackwardsCompatibility() {
376+
ExpressionEvaluator evaluator = new PluginParameterExpressionEvaluator(session, mojoExecution);
377+
378+
try {
379+
// If at least one scijava.* property is set, ignore imagej.* properties
380+
if (evaluator.evaluate("${" + appDirectoryProperty + "}") == null &&
381+
evaluator.evaluate("${" + appSubdirectoryProperty + "}") == null &&
382+
evaluator.evaluate("${" + deleteOtherVersionsPolicyProperty + "}") == null)
383+
{
384+
385+
// Keep backwards compatibility to delete.other.versions
386+
if (evaluator.evaluate("${"+deleteOtherVersionsProperty+"}") != null) {
387+
getLog().warn("Property '" + deleteOtherVersionsProperty + "' is deprecated. Use '"+ deleteOtherVersionsPolicyProperty +"' instead");
388+
deleteOtherVersionsPolicy = deleteOtherVersions ? OtherVersions.older : OtherVersions.never;
389+
}
390+
391+
// Keep backwards compatibility to imagej.app.directory
392+
// Use imagejDirectory if it is set (directly or via imagej.app.directory)
393+
if (imagejDirectory != null) {
394+
if (evaluator.evaluate("${"+imagejDirectoryProperty+"}") == null) {
395+
getLog().warn("Configuration property 'imagejDirectory' is deprecated. Use 'appDirectory' instead");
396+
} else {
397+
getLog().warn("Property '" + imagejDirectoryProperty + "' is deprecated. Use '"+ appDirectoryProperty +"' instead");
398+
}
399+
appDirectory = imagejDirectory;
400+
}
401+
402+
// Keep backwards compatibility to imagej.app.subdirectory
403+
// Use imagejSubdirectory if it is set (directly or via imagej.app.subdirectory)
404+
if (imagejSubdirectory != null) {
405+
if (evaluator.evaluate("${"+imagejSubdirectoryProperty+"}") == null) {
406+
getLog().warn("Configuration property 'imagejSubdirectory' is deprecated. Use 'appSubdirectory' instead");
407+
} else {
408+
getLog().warn("Property '" + imagejSubdirectoryProperty + "' is deprecated. Use '"+ appSubdirectoryProperty +"' instead");
409+
}
410+
appSubdirectory = imagejSubdirectory;
411+
}
412+
413+
// Keep backwards compatibility to imagej.deleteOtherVersions
414+
// Use imagejDeleteOtherVersionsPolicy if it is set (directly or via imagej.deleteOtherVersions)
415+
if (imagejDeleteOtherVersionsPolicy != null) {
416+
if (evaluator.evaluate("${"+imagejDeleteOtherVersionsPolicyProperty+"}") == null) {
417+
getLog().warn("Configuration property 'imagejDeleteOtherVersionsPolicy' is deprecated. Use 'deleteOtherVersionsPolicy' instead");
418+
} else {
419+
getLog().warn("Property '" + imagejDeleteOtherVersionsPolicyProperty + "' is deprecated. Use '"+ deleteOtherVersionsPolicyProperty +"' instead");
420+
}
421+
deleteOtherVersionsPolicy = imagejDeleteOtherVersionsPolicy;
422+
}
423+
}
424+
}
425+
catch (ExpressionEvaluationException e) {
426+
getLog().warn(e);
427+
}
428+
}
429+
446430
/**
447431
* Checks if a {@link DependableCoordinate} and an {@link Artifact} share
448432
* the same GAV.

0 commit comments

Comments
 (0)