├── src ├── main │ ├── resources │ │ ├── org │ │ │ └── jenkinsci │ │ │ │ └── plugins │ │ │ │ └── unity3d │ │ │ │ ├── Unity3dBuilder │ │ │ │ ├── help-name.html │ │ │ │ ├── help.html │ │ │ │ ├── global.jelly │ │ │ │ ├── config.jelly │ │ │ │ └── help-argLine.html │ │ │ │ ├── Unity3dInstallation │ │ │ │ └── help-home.html │ │ │ │ └── Messages.properties │ │ └── index.jelly │ ├── java │ │ └── org │ │ │ └── jenkinsci │ │ │ └── plugins │ │ │ └── unity3d │ │ │ ├── logs │ │ │ ├── EditorLogParser.java │ │ │ ├── block │ │ │ │ ├── UpdateBlock.java │ │ │ │ ├── PrepareBlock.java │ │ │ │ ├── LightmapBlock.java │ │ │ │ ├── CompileBlock.java │ │ │ │ ├── UnityBlockList.java │ │ │ │ ├── PlayerStatisticsBlock.java │ │ │ │ ├── MatchedBlock.java │ │ │ │ └── Block.java │ │ │ └── line │ │ │ │ ├── Line.java │ │ │ │ └── UnityLineList.java │ │ │ ├── Functions2.java │ │ │ ├── io │ │ │ ├── Pipe.java │ │ │ └── DetectFileModifiedAction.java │ │ │ └── Win32Util.java │ └── webapp │ │ └── help-globalArgLine.html └── test │ ├── resources │ └── org │ │ └── jenkinsci │ │ └── plugins │ │ └── unity3d │ │ └── IntegrationTests │ │ ├── testEditorException │ │ ├── jobs │ │ │ └── test_unity3d │ │ │ │ ├── workspace │ │ │ │ ├── Assets │ │ │ │ │ ├── Editor.meta │ │ │ │ │ └── Editor │ │ │ │ │ │ ├── Builder.cs.meta │ │ │ │ │ │ └── Builder.cs │ │ │ │ └── ProjectSettings │ │ │ │ │ ├── EditorBuildSettings.asset │ │ │ │ │ ├── NetworkManager.asset │ │ │ │ │ ├── TimeManager.asset │ │ │ │ │ ├── GraphicsSettings.asset │ │ │ │ │ ├── AudioManager.asset │ │ │ │ │ ├── EditorSettings.asset │ │ │ │ │ ├── Physics2DSettings.asset │ │ │ │ │ ├── DynamicsManager.asset │ │ │ │ │ ├── TagManager.asset │ │ │ │ │ └── NavMeshLayers.asset │ │ │ │ └── config.xml │ │ ├── org.jenkinsci.plugins.unity3d.Unity3dBuilder.xml │ │ └── config.xml │ │ ├── testExpectADifferentExitCode │ │ ├── jobs │ │ │ └── test_unity3d │ │ │ │ ├── workspace │ │ │ │ ├── Assets │ │ │ │ │ ├── UnityTestTools │ │ │ │ │ │ ├── LICENSE.txt.meta │ │ │ │ │ │ ├── changelog.txt.meta │ │ │ │ │ │ ├── Common.meta │ │ │ │ │ │ ├── Assertions.meta │ │ │ │ │ │ ├── UnitTesting.meta │ │ │ │ │ │ ├── Common │ │ │ │ │ │ │ ├── Editor.meta │ │ │ │ │ │ │ ├── Settings.meta │ │ │ │ │ │ │ ├── Editor │ │ │ │ │ │ │ │ ├── icons.meta │ │ │ │ │ │ │ │ ├── ResultWriter.meta │ │ │ │ │ │ │ │ ├── Icons.cs.meta │ │ │ │ │ │ │ │ ├── Styles.cs.meta │ │ │ │ │ │ │ │ ├── ProjectSettingsBase.cs.meta │ │ │ │ │ │ │ │ ├── ResultWriter │ │ │ │ │ │ │ │ │ ├── ResultSummarizer.cs.meta │ │ │ │ │ │ │ │ │ ├── StackTraceFilter.cs.meta │ │ │ │ │ │ │ │ │ ├── XmlResultWriter.cs.meta │ │ │ │ │ │ │ │ │ └── StackTraceFilter.cs │ │ │ │ │ │ │ │ ├── icons │ │ │ │ │ │ │ │ │ ├── failed.png │ │ │ │ │ │ │ │ │ ├── ignored.png │ │ │ │ │ │ │ │ │ ├── normal.png │ │ │ │ │ │ │ │ │ ├── passed.png │ │ │ │ │ │ │ │ │ ├── stopwatch.png │ │ │ │ │ │ │ │ │ ├── inconclusive.png │ │ │ │ │ │ │ │ │ ├── play-darktheme.png │ │ │ │ │ │ │ │ │ ├── play-lighttheme.png │ │ │ │ │ │ │ │ │ ├── rerun-darktheme.png │ │ │ │ │ │ │ │ │ ├── create-darktheme.png │ │ │ │ │ │ │ │ │ ├── create-lighttheme.png │ │ │ │ │ │ │ │ │ ├── options-darktheme.png │ │ │ │ │ │ │ │ │ ├── rerun-lighttheme.png │ │ │ │ │ │ │ │ │ ├── options-lighttheme.png │ │ │ │ │ │ │ │ │ ├── play_selected-darktheme.png │ │ │ │ │ │ │ │ │ ├── play_selected-lighttheme.png │ │ │ │ │ │ │ │ │ ├── failed.png.meta │ │ │ │ │ │ │ │ │ ├── ignored.png.meta │ │ │ │ │ │ │ │ │ ├── normal.png.meta │ │ │ │ │ │ │ │ │ ├── passed.png.meta │ │ │ │ │ │ │ │ │ ├── stopwatch.png.meta │ │ │ │ │ │ │ │ │ ├── inconclusive.png.meta │ │ │ │ │ │ │ │ │ ├── play-darktheme.png.meta │ │ │ │ │ │ │ │ │ ├── play-lighttheme.png.meta │ │ │ │ │ │ │ │ │ ├── rerun-darktheme.png.meta │ │ │ │ │ │ │ │ │ ├── create-darktheme.png.meta │ │ │ │ │ │ │ │ │ ├── create-lighttheme.png.meta │ │ │ │ │ │ │ │ │ ├── options-darktheme.png.meta │ │ │ │ │ │ │ │ │ ├── options-lighttheme.png.meta │ │ │ │ │ │ │ │ │ ├── rerun-lighttheme.png.meta │ │ │ │ │ │ │ │ │ ├── play_selected-darktheme.png.meta │ │ │ │ │ │ │ │ │ └── play_selected-lighttheme.png.meta │ │ │ │ │ │ │ │ ├── ProjectSettingsBase.cs │ │ │ │ │ │ │ │ └── Styles.cs │ │ │ │ │ │ │ ├── Settings │ │ │ │ │ │ │ │ ├── PlatformRunnerSettings.asset.meta │ │ │ │ │ │ │ │ ├── UnitTestsRunnerSettings.asset.meta │ │ │ │ │ │ │ │ ├── IntegrationTestsRunnerSettings.asset.meta │ │ │ │ │ │ │ │ ├── PlatformRunnerSettings.asset │ │ │ │ │ │ │ │ ├── IntegrationTestsRunnerSettings.asset │ │ │ │ │ │ │ │ └── UnitTestsRunnerSettings.asset │ │ │ │ │ │ │ ├── ITestResult.cs.meta │ │ │ │ │ │ │ ├── TestResultState.cs.meta │ │ │ │ │ │ │ ├── ITestResult.cs │ │ │ │ │ │ │ └── TestResultState.cs │ │ │ │ │ │ ├── Assertions │ │ │ │ │ │ │ ├── Comparers.meta │ │ │ │ │ │ │ ├── Editor.meta │ │ │ │ │ │ │ ├── Assertions.cs.meta │ │ │ │ │ │ │ ├── CheckMethod.cs.meta │ │ │ │ │ │ │ ├── MemberResolver.cs.meta │ │ │ │ │ │ │ ├── AssertionComponent.cs.meta │ │ │ │ │ │ │ ├── AssertionException.cs.meta │ │ │ │ │ │ │ ├── Comparers │ │ │ │ │ │ │ │ ├── ActionBase.cs.meta │ │ │ │ │ │ │ │ ├── BoolComparer.cs │ │ │ │ │ │ │ │ ├── BoolComparer.cs.meta │ │ │ │ │ │ │ │ ├── ComparerBase.cs.meta │ │ │ │ │ │ │ │ ├── FloatComparer.cs.meta │ │ │ │ │ │ │ │ ├── IntComparer.cs.meta │ │ │ │ │ │ │ │ ├── StringComparer.cs.meta │ │ │ │ │ │ │ │ ├── ColliderComparer.cs.meta │ │ │ │ │ │ │ │ ├── GeneralComparer.cs.meta │ │ │ │ │ │ │ │ ├── IsRenderedByCamera.cs.meta │ │ │ │ │ │ │ │ ├── TransformComparer.cs.meta │ │ │ │ │ │ │ │ ├── ValueDoesNotChange.cs.meta │ │ │ │ │ │ │ │ ├── Vector2Comparer.cs.meta │ │ │ │ │ │ │ │ ├── Vector3Comparer.cs.meta │ │ │ │ │ │ │ │ ├── Vector4Comparer.cs.meta │ │ │ │ │ │ │ │ ├── VectorComparerBase.cs.meta │ │ │ │ │ │ │ │ ├── ValueDoesNotChange.cs │ │ │ │ │ │ │ │ ├── VectorComparerBase.cs │ │ │ │ │ │ │ │ ├── GeneralComparer.cs │ │ │ │ │ │ │ │ ├── TransformComparer.cs │ │ │ │ │ │ │ │ ├── ColliderComparer.cs │ │ │ │ │ │ │ │ ├── IsRenderedByCamera.cs │ │ │ │ │ │ │ │ ├── Vector3Comparer.cs │ │ │ │ │ │ │ │ ├── IntComparer.cs │ │ │ │ │ │ │ │ ├── FloatComparer.cs │ │ │ │ │ │ │ │ ├── Vector2Comparer.cs │ │ │ │ │ │ │ │ ├── Vector4Comparer.cs │ │ │ │ │ │ │ │ └── StringComparer.cs │ │ │ │ │ │ │ ├── Editor │ │ │ │ │ │ │ │ ├── AssertionStripper.cs.meta │ │ │ │ │ │ │ │ ├── DropDownControl.cs.meta │ │ │ │ │ │ │ │ ├── GroupByGORenderer.cs.meta │ │ │ │ │ │ │ │ ├── PropertyResolver.cs.meta │ │ │ │ │ │ │ │ ├── AssertionListRenderer.cs.meta │ │ │ │ │ │ │ │ ├── GroupByNothingRenderer.cs.meta │ │ │ │ │ │ │ │ ├── GroupByTestsRenderer.cs.meta │ │ │ │ │ │ │ │ ├── PropertyPathSelector.cs.meta │ │ │ │ │ │ │ │ ├── AssertionComponentEditor.cs.meta │ │ │ │ │ │ │ │ ├── AssertionExplorerWindow.cs.meta │ │ │ │ │ │ │ │ ├── GroupByComparerRenderer.cs.meta │ │ │ │ │ │ │ │ ├── GroupByExecutionMethodRenderer.cs.meta │ │ │ │ │ │ │ │ ├── GroupByNothingRenderer.cs │ │ │ │ │ │ │ │ ├── GroupByComparerRenderer.cs │ │ │ │ │ │ │ │ ├── AssertionStripper.cs │ │ │ │ │ │ │ │ ├── GroupByTestsRenderer.cs │ │ │ │ │ │ │ │ ├── GroupByGORenderer.cs │ │ │ │ │ │ │ │ ├── GroupByExecutionMethodRenderer.cs │ │ │ │ │ │ │ │ └── DropDownControl.cs │ │ │ │ │ │ │ ├── InvalidPathException.cs.meta │ │ │ │ │ │ │ ├── InvalidPathException.cs │ │ │ │ │ │ │ ├── AssertionException.cs │ │ │ │ │ │ │ ├── CheckMethod.cs │ │ │ │ │ │ │ └── Assertions.cs │ │ │ │ │ │ ├── UnitTesting │ │ │ │ │ │ │ ├── Editor.meta │ │ │ │ │ │ │ └── Editor │ │ │ │ │ │ │ │ ├── NUnit.meta │ │ │ │ │ │ │ │ ├── NSubstitute.meta │ │ │ │ │ │ │ │ ├── NUnit │ │ │ │ │ │ │ │ ├── Libs.meta │ │ │ │ │ │ │ │ ├── Renderer.meta │ │ │ │ │ │ │ │ ├── Libs │ │ │ │ │ │ │ │ │ ├── Mono.Cecil.dll.meta │ │ │ │ │ │ │ │ │ ├── nunit.core.dll.meta │ │ │ │ │ │ │ │ │ ├── Mono.Cecil.Mdb.dll.meta │ │ │ │ │ │ │ │ │ ├── nunit.framework.dll.meta │ │ │ │ │ │ │ │ │ ├── nunit.core.interfaces.dll.meta │ │ │ │ │ │ │ │ │ ├── Mono.Cecil.dll │ │ │ │ │ │ │ │ │ ├── nunit.core.dll │ │ │ │ │ │ │ │ │ ├── Mono.Cecil.Mdb.dll │ │ │ │ │ │ │ │ │ ├── nunit.framework.dll │ │ │ │ │ │ │ │ │ └── nunit.core.interfaces.dll │ │ │ │ │ │ │ │ └── Renderer │ │ │ │ │ │ │ │ │ ├── GroupLine.cs.meta │ │ │ │ │ │ │ │ │ ├── TestLine.cs.meta │ │ │ │ │ │ │ │ │ ├── RenderingOptions.cs.meta │ │ │ │ │ │ │ │ │ ├── UnitTestRendererLine.cs.meta │ │ │ │ │ │ │ │ │ └── RenderingOptions.cs │ │ │ │ │ │ │ │ ├── TestRunner.meta │ │ │ │ │ │ │ │ ├── NSubstitute │ │ │ │ │ │ │ │ ├── NSubstitute.dll.meta │ │ │ │ │ │ │ │ └── NSubstitute.dll │ │ │ │ │ │ │ │ ├── Batch.cs.meta │ │ │ │ │ │ │ │ ├── UnityUnitTest.cs.meta │ │ │ │ │ │ │ │ ├── TestRunner │ │ │ │ │ │ │ │ ├── GuiHelper.cs.meta │ │ │ │ │ │ │ │ ├── TestRunner.cs.meta │ │ │ │ │ │ │ │ ├── IUnitTestEngine.cs.meta │ │ │ │ │ │ │ │ ├── NUnitExtensions.cs.meta │ │ │ │ │ │ │ │ ├── NUnitTestEngine.cs.meta │ │ │ │ │ │ │ │ ├── UnitTestInfo.cs.meta │ │ │ │ │ │ │ │ ├── UnitTestResult.cs.meta │ │ │ │ │ │ │ │ ├── UnitTestView.cs.meta │ │ │ │ │ │ │ │ ├── BackgroundRunner.cs.meta │ │ │ │ │ │ │ │ ├── ITestRunnerCallback.cs.meta │ │ │ │ │ │ │ │ ├── TestRunnerCallbackList.cs.meta │ │ │ │ │ │ │ │ ├── IUnitTestEngine.cs │ │ │ │ │ │ │ │ ├── ITestRunnerCallback.cs │ │ │ │ │ │ │ │ ├── NUnitExtensions.cs │ │ │ │ │ │ │ │ ├── TestRunnerCallbackList.cs │ │ │ │ │ │ │ │ ├── UnitTestResult.cs │ │ │ │ │ │ │ │ └── BackgroundRunner.cs │ │ │ │ │ │ │ │ ├── UnitTestsRunnerSettings.cs.meta │ │ │ │ │ │ │ │ ├── UnitTestsRunnerSettings.cs │ │ │ │ │ │ │ │ └── UnityUnitTest.cs │ │ │ │ │ │ ├── IntegrationTestsFramework.meta │ │ │ │ │ │ ├── IntegrationTestsFramework │ │ │ │ │ │ │ ├── TestRunner.meta │ │ │ │ │ │ │ └── TestRunner │ │ │ │ │ │ │ │ ├── Editor.meta │ │ │ │ │ │ │ │ ├── Editor │ │ │ │ │ │ │ │ ├── Renderer.meta │ │ │ │ │ │ │ │ ├── PlatformRunner.meta │ │ │ │ │ │ │ │ ├── Batch.cs.meta │ │ │ │ │ │ │ │ ├── TestComponentEditor.cs.meta │ │ │ │ │ │ │ │ ├── IntegrationTestsRunnerSettings.cs.meta │ │ │ │ │ │ │ │ ├── IntegrationTestsRunnerWindow.cs.meta │ │ │ │ │ │ │ │ ├── PlatformRunner │ │ │ │ │ │ │ │ │ ├── PlatformRunner.cs.meta │ │ │ │ │ │ │ │ │ ├── NetworkResultsReceiver.cs.meta │ │ │ │ │ │ │ │ │ ├── PlatformRunnerSettings.cs.meta │ │ │ │ │ │ │ │ │ ├── PlayerSettingConfigurator.cs.meta │ │ │ │ │ │ │ │ │ ├── PlatformRunnerConfiguration.cs.meta │ │ │ │ │ │ │ │ │ ├── PlatformRunnerSettingsWindow.cs.meta │ │ │ │ │ │ │ │ │ ├── PlatformRunnerSettings.cs │ │ │ │ │ │ │ │ │ ├── PlatformRunnerConfiguration.cs │ │ │ │ │ │ │ │ │ └── PlayerSettingConfigurator.cs │ │ │ │ │ │ │ │ ├── Renderer │ │ │ │ │ │ │ │ │ ├── IntegrationTestLine.cs.meta │ │ │ │ │ │ │ │ │ ├── IntegrationTestGroupLine.cs.meta │ │ │ │ │ │ │ │ │ ├── IntegrationTestRendererBase.cs.meta │ │ │ │ │ │ │ │ │ └── IntegrationTestLine.cs │ │ │ │ │ │ │ │ └── IntegrationTestsRunnerSettings.cs │ │ │ │ │ │ │ │ ├── ResultDTO.cs.meta │ │ │ │ │ │ │ │ ├── TestComponent.cs.meta │ │ │ │ │ │ │ │ ├── TestResult.cs.meta │ │ │ │ │ │ │ │ ├── TestRunner.cs.meta │ │ │ │ │ │ │ │ ├── IntegrationTest.cs.meta │ │ │ │ │ │ │ │ ├── TestResultRenderer.cs.meta │ │ │ │ │ │ │ │ ├── ITestRunnerCallback.cs.meta │ │ │ │ │ │ │ │ ├── NetworkResultSender.cs.meta │ │ │ │ │ │ │ │ ├── TestRunnerCallbackList.cs.meta │ │ │ │ │ │ │ │ ├── TestRunnerConfigurator.cs.meta │ │ │ │ │ │ │ │ ├── IntegrationTestAttribute.cs.meta │ │ │ │ │ │ │ │ ├── IntegrationTestsProvider.cs.meta │ │ │ │ │ │ │ │ ├── ITestRunnerCallback.cs │ │ │ │ │ │ │ │ ├── IntegrationTestAttribute.cs │ │ │ │ │ │ │ │ └── TestRunnerCallbackList.cs │ │ │ │ │ │ └── LICENSE.txt │ │ │ │ │ ├── IntegrationTests.meta │ │ │ │ │ ├── UnityTestTools.meta │ │ │ │ │ └── IntegrationTests │ │ │ │ │ │ ├── IntegrationPartialFailTests.unity.meta │ │ │ │ │ │ ├── IntegrationTotalFailTests.unity.meta │ │ │ │ │ │ ├── IntegrationPartialFailTests.cs.meta │ │ │ │ │ │ ├── IntegrationTotalFailTests.cs.meta │ │ │ │ │ │ ├── IntegrationTotalFailTests.cs │ │ │ │ │ │ └── IntegrationPartialFailTests.cs │ │ │ │ └── ProjectSettings │ │ │ │ │ ├── NetworkManager.asset │ │ │ │ │ ├── TimeManager.asset │ │ │ │ │ ├── AudioManager.asset │ │ │ │ │ ├── EditorBuildSettings.asset │ │ │ │ │ ├── GraphicsSettings.asset │ │ │ │ │ ├── EditorSettings.asset │ │ │ │ │ ├── DynamicsManager.asset │ │ │ │ │ ├── Physics2DSettings.asset │ │ │ │ │ ├── TagManager.asset │ │ │ │ │ └── NavMeshLayers.asset │ │ │ │ └── config.xml │ │ ├── org.jenkinsci.plugins.unity3d.Unity3dBuilder.xml │ │ └── config.xml │ │ └── testEditorExceptionWithCustomLogFile │ │ ├── jobs │ │ └── test_unity3d │ │ │ ├── workspace │ │ │ ├── Assets │ │ │ │ ├── Editor.meta │ │ │ │ └── Editor │ │ │ │ │ ├── Builder.cs.meta │ │ │ │ │ └── Builder.cs │ │ │ └── ProjectSettings │ │ │ │ ├── EditorBuildSettings.asset │ │ │ │ ├── NetworkManager.asset │ │ │ │ ├── TimeManager.asset │ │ │ │ ├── GraphicsSettings.asset │ │ │ │ ├── AudioManager.asset │ │ │ │ ├── EditorSettings.asset │ │ │ │ ├── Physics2DSettings.asset │ │ │ │ ├── DynamicsManager.asset │ │ │ │ └── TagManager.asset │ │ │ └── config.xml │ │ ├── org.jenkinsci.plugins.unity3d.Unity3dBuilder.xml │ │ └── config.xml │ └── java │ └── org │ └── jenkinsci │ └── plugins │ └── unity3d │ ├── logs │ └── EditorLogParserImplTest.java │ └── IntegrationTests.java ├── doc ├── jenkins-unity3d-global-configuration.png └── jenkins-unity3d-project-configuration.png ├── .gitignore ├── .github └── workflows │ └── jenkins-security-scan.yml ├── LICENSE.txt └── pom.xml /src/main/resources/org/jenkinsci/plugins/unity3d/Unity3dBuilder/help-name.html: -------------------------------------------------------------------------------- 1 |
For projects that use Unity3d as the build system.
2 | This causes Jenkins to invoke the Unity3d Editor with the given command line arguments.
3 | A non-zero exit code from Unity3d makes Jenkins mark the build as a failure.
4 |
3 | The platform independent Unity3d installation path. This path will be suffixed by "Editor/Unity.exe" on Windows and 4 | "Contents/MacOS/Unity" on Mac by the plugin. 5 |
6 |7 | This field is optional on the jenkins master if you do not intend to build with unity3d on the master. 8 | Do not forget to configure the location of the installations on your nodes as needed. 9 |
10 | 11 |You may use environment variables in the path and define those variables wherever you feel like (master, node, job). The final installation path will be resolved at job execution time.
12 |3 | The Unity3d globalArgLine. Allows you to define a per default global configuration for all your unity3d builds. 4 |
5 |6 | Combined with a plugin like EnvInject, allows you to configure most of your projects in one place. 7 |
8 |9 | For example: use: 10 |
11 |
12 | -logFile "$WORKSPACE/unity3d_editor.log" -quit -batchmode -executeMethod $UNITY_EXECUTEMETHOD $UNITY_EXTRA_ARGUMENTS
13 |
15 | and define per project the UNITY_EXECUTEMETHOD and optional UNITY_EXTRA_ARGUMENTS variables. 16 |
17 | 18 |
19 | Is overriden by the per project argLine value.
20 |
4 | -quit -batchmode -executeMethod YourEditorScript.YourBuildMethod [-nographics] or
5 | -quit -batchmode -buildWindowsPlayer path/to/your/build.exe or
6 | -quit -batchmode -buildOSXPlayer path/to/your/build.app
7 |
8 |
If this value isn't set, the globalArgLine is used. 9 | 10 |
11 | Note: we make little to no attempt to detect conflicting arguments or arguments not suitable to the platform neither at configuration nor at runtime. 12 |
If the specified command line contains no -projectPath argument, the plugin automatically adds one with the proper parameter (the workspace of the project on the target machine).
13 | This is to make sure unity builds the proper project. Otherwise unity would reuse the last opened project. You can override it, but this hasn't been thoroughly tested.
14 |
If your build agent have multiple executors (which you should probably do), it is highly recommended to make use of a -logFile argument to avoid letting Unityed write to the standard editor.log concurrently. A recommended practise is to use something like -logFile "$WORKSPACE/unity3d_editor.log".
15 |
16 | See the official Editor command line arguments documentation. 17 |
10 | * The task checks for changes in either the last modified timestamp (precise up to the second) or the file size to detect a change. 11 | *
12 | * The task cannot currently be stopped, and its time between checks is hardcoded (50 msec).
13 | *
14 | * @author Jerome Lacoste
15 | */
16 | public class DetectFileModifiedAction implements Callable