Skip to content

Commit

Permalink
Add incremental build and project references to java projects (#25707)
Browse files Browse the repository at this point in the history
* Add incremental build and project references to java projects

* fb

* fix version
  • Loading branch information
BrennanConroy authored and captainsafia committed Sep 9, 2020
1 parent 846e18b commit d7a6730
Show file tree
Hide file tree
Showing 7 changed files with 95 additions and 74 deletions.
1 change: 1 addition & 0 deletions Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,7 @@
<Import Project="eng\targets\CSharp.Common.props" Condition="'$(MSBuildProjectExtension)' == '.csproj'" />
<Import Project="eng\targets\Wix.Common.props" Condition="'$(MSBuildProjectExtension)' == '.wixproj'" />
<Import Project="eng\targets\Npm.Common.props" Condition="'$(MSBuildProjectExtension)' == '.npmproj'" />
<Import Project="eng\targets\Java.Common.props" Condition="'$(MSBuildProjectExtension)' == '.javaproj'" />
<Import Project="eng\targets\Helix.props" Condition="'$(IsTestProject)' == 'true'" />

</Project>
1 change: 1 addition & 0 deletions Directory.Build.targets
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,7 @@
<Import Project="eng\targets\FSharp.Common.targets" Condition="'$(MSBuildProjectExtension)' == '.fsproj'" />
<Import Project="eng\targets\Wix.Common.targets" Condition="'$(MSBuildProjectExtension)' == '.wixproj'" />
<Import Project="eng\targets\Npm.Common.targets" Condition="'$(MSBuildProjectExtension)' == '.npmproj'" />
<Import Project="eng\targets\Java.Common.targets" Condition="'$(MSBuildProjectExtension)' == '.javaproj'" />
<Import Project="eng\targets\Helix.targets" Condition="'$(IsTestProject)' == 'true'" />
<Import Project="eng\targets\FunctionalTestAsset.targets" Condition="'$(IsTestAssetProject)' == 'true'" />
<Import Project="eng\targets\FunctionalTestWithAssets.targets" Condition="'$(ContainsFunctionalTestAssets)' == 'true'" />
Expand Down
7 changes: 7 additions & 0 deletions eng/targets/Java.Common.props
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<Project>
<PropertyGroup>
<!-- Disable gradle daemon on CI since the CI seems to try to wait for the daemon to shut down, which it doesn't do -->
<GradleOptions Condition="'$(ContinuousIntegrationBuild)' == 'true'">$(GradleOptions) -Dorg.gradle.daemon=false</GradleOptions>
<PackOnBuild>false</PackOnBuild>
</PropertyGroup>
</Project>
77 changes: 77 additions & 0 deletions eng/targets/Java.Common.targets
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
<Project DefaultTargets="Build">

<PropertyGroup>
<BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)' == ''">$(ArtifactsDir)\obj\</BaseIntermediateOutputPath>
<IntermediateOutputPath>$([MSBuild]::NormalizeDirectory('$(BaseIntermediateOutputPath)'))$(Configuration)\</IntermediateOutputPath>
<BuildDependsOn>
PrepareForBuild;
ResolveProjectReferences;
_Build;
</BuildDependsOn>
<JavaBuildArgs Condition="'$(JavaBuildArgs)' == ''">../gradlew $(GradleOptions) compileJava</JavaBuildArgs>
<GradleOptions>$(GradleOptions) -PpackageVersion="$(PackageVersion)"</GradleOptions>
</PropertyGroup>

<ItemGroup>
<JavaFiles Include="src\**\*.java" />
<JavaFiles Include="*.javaproj" />
<JavaFiles Include="build.gradle" />

<BuildOutputFiles Include="$(BaseIntermediateOutputPath)build-sentinel" />
</ItemGroup>

<Target Name="Restore" />

<Target Name="PrepareForBuild">
<MakeDir Directories="$(IntermediateOutputPath);$(PackageOutputPath)" />
</Target>

<Target Name="ResolveProjectReferences">
<MSBuild Projects="@(ProjectReference)"
BuildInParallel="true" />
</Target>

<Target Name="Build" DependsOnTargets="$(BuildDependsOn)" />

<Target Name="GetBuildInputCacheFile">
<Hash ItemsToHash="@(JavaFiles)">
<Output TaskParameter="HashResult" PropertyName="_JavaFileHash" />
</Hash>

<WriteLinesToFile
Lines="$(_JavaFileHash)"
File="$(BaseIntermediateOutputPath)javafiles.cache"
Overwrite="True"
WriteOnlyWhenDifferent="True" />
</Target>

<Target Name="_Build"
Condition="'$(IsBuildable)' != 'false'"
DependsOnTargets="GetBuildInputCacheFile"
Inputs="@(JavaFiles);$(BaseIntermediateOutputPath)javafiles.cache"
Outputs="@(BuildOutputFiles)">
<Telemetry EventName="NETCORE_ENGINEERING_TELEMETRY" EventData="Category=Build" />
<Exec Command="$(JavaBuildArgs)" />
<WriteLinesToFile Overwrite="true" File="$(BaseIntermediateOutputPath)build-sentinel" />
</Target>

<PropertyGroup>
<PackDependsOn Condition="'$(NoBuild)' != 'true'">
Build;
$(PackDependsOn);
</PackDependsOn>
</PropertyGroup>

<Target Name="Pack" Condition="'$(IsPackable)' == 'true'" DependsOnTargets="$(PackDependsOn)">
<Telemetry EventName="NETCORE_ENGINEERING_TELEMETRY" EventData="Category=Pack" />
<Message Text="> gradlew $(GradleOptions) createPackage" Importance="high" />
<Exec Command="../gradlew $(GradleOptions) createPackage" />
<Message Importance="high" Text="$(PackageId) -> $(PackageOutputPath)%(JavaBuildFiles.Identity)" />
<Copy SourceFiles="$(MSBuildProjectDirectory)\build\libs\%(JavaBuildFiles.Identity)" DestinationFolder="$(PackageOutputPath)" />
</Target>

<Target Name="Test" />

<Target Name="Publish" />

</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@
<!-- In servicing builds, this will be set to value if the Java client is not configured to be released in the currently building patch. -->
<IsPackable>true</IsPackable>
<IsTestProject>false</IsTestProject>
<!-- Disable gradle daemon on CI since the CI seems to try to wait for the daemon to shut down, which it doesn't do :) -->
<GradleOptions Condition="'$(ContinuousIntegrationBuild)' == 'true'">$(GradleOptions) -Dorg.gradle.daemon=false</GradleOptions>
<PublishDir>$(OutputPath)</PublishDir>
</PropertyGroup>

Expand All @@ -21,37 +19,5 @@
<JavaBuildFiles Include="@(Jars);@(PomFile)"/>
</ItemGroup>

<Target Name="Restore" />

<PropertyGroup>
<PackDependsOn Condition=" '$(NoBuild)' != 'true' ">
$(PackDependsOn);
Build
</PackDependsOn>
</PropertyGroup>

<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Directory.Build.targets))\Directory.Build.targets" />

<PropertyGroup>
<GradleOptions>$(GradleOptions) -PpackageVersion="$(PackageVersion)"</GradleOptions>
</PropertyGroup>

<!-- Define Target overrides after importing Directory.Build.targets so these don't get overridden -->
<Target Name="Pack" DependsOnTargets="$(PackDependsOn)" Condition="'$(IsPackable)' == 'true'">
<Telemetry EventName="NETCORE_ENGINEERING_TELEMETRY" EventData="Category=Pack" />
<Message Text="> gradlew $(GradleOptions) createPackage" Importance="high" />
<Exec Command="../gradlew $(GradleOptions) createPackage" />
<Message Importance="high" Text="java:signalr -> $(PackageOutputPath)%(JavaBuildFiles.Identity)" />
<Copy SourceFiles="$(MSBuildThisFileDirectory)build\libs\%(JavaBuildFiles.Identity)" DestinationFolder="$(PackageOutputPath)" />
</Target>

<Target Name="Build">
<Telemetry EventName="NETCORE_ENGINEERING_TELEMETRY" EventData="Category=Build" />
<Exec Command="../gradlew $(GradleOptions) compileJava" />
</Target>

<Target Name="Test" />

<Target Name="Publish" />

</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@
<!-- In servicing builds, this will be set to value if the Java client is not configured to be released in the currently building patch. -->
<IsPackable>true</IsPackable>
<IsTestProject>false</IsTestProject>
<!-- Disable gradle daemon on CI since the CI seems to try to wait for the daemon to shut down, which it doesn't do :) -->
<GradleOptions Condition="'$(ContinuousIntegrationBuild)' == 'true'">$(GradleOptions) -Dorg.gradle.daemon=false</GradleOptions>
<PublishDir>$(OutputPath)</PublishDir>
</PropertyGroup>

Expand All @@ -21,37 +19,9 @@
<JavaBuildFiles Include="@(Jars);@(PomFile)"/>
</ItemGroup>

<Target Name="Restore" />

<PropertyGroup>
<PackDependsOn Condition=" '$(NoBuild)' != 'true' ">
$(PackDependsOn);
Build
</PackDependsOn>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="../core/signalr.client.java.core.javaproj" />
</ItemGroup>

<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Directory.Build.targets))\Directory.Build.targets" />

<PropertyGroup>
<GradleOptions>$(GradleOptions) -PpackageVersion="$(PackageVersion)"</GradleOptions>
</PropertyGroup>

<!-- Define Target overrides after importing Directory.Build.targets so these don't get overridden -->
<Target Name="Pack" DependsOnTargets="$(PackDependsOn)" Condition="'$(IsPackable)' == 'true'">
<Telemetry EventName="NETCORE_ENGINEERING_TELEMETRY" EventData="Category=Pack" />
<Message Text="> gradlew $(GradleOptions) createPackage" Importance="high" />
<Exec Command="../gradlew $(GradleOptions) createPackage" />
<Message Importance="high" Text="java:signalr-messagepack -> $(PackageOutputPath)%(JavaBuildFiles.Identity)" />
<Copy SourceFiles="$(MSBuildThisFileDirectory)build\libs\%(JavaBuildFiles.Identity)" DestinationFolder="$(PackageOutputPath)" />
</Target>

<Target Name="Build">
<Telemetry EventName="NETCORE_ENGINEERING_TELEMETRY" EventData="Category=Build" />
<Exec Command="../gradlew $(GradleOptions) compileJava" />
</Target>

<Target Name="Test" />

<Target Name="Publish" />

</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,23 @@
<SkipHelixArm>true</SkipHelixArm>
<!-- Skipping on Helix for now -->
<BuildHelixPayload>false</BuildHelixPayload>
<!-- Disable gradle daemon on CI since the CI seems to try to wait for the daemon to shut down, which it doesn't do :) -->
<GradleOptions Condition="'$(ContinuousIntegrationBuild)' == 'true'">$(GradleOptions) -Dorg.gradle.daemon=false</GradleOptions>
<PublishDir>$(OutputPath)</PublishDir>
<TestDependsOnJava>true</TestDependsOnJava>
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="../core/signalr.client.java.core.javaproj" />
<ProjectReference Include="../messagepack/signalr.client.java.messagepack.javaproj" />
</ItemGroup>

<Target Name="Restore" />

<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Directory.Build.targets))\Directory.Build.targets" />

<!-- Define Target overrides after importing Directory.Build.targets so these don't get overridden -->
<Target Name="Pack" />

<Target Name="Build" />

<Target Name="Test" Condition="'$(SkipTests)' != 'true'">
<Target Name="Test" Condition="'$(SkipTests)' != 'true'" DependsOnTargets="Build">
<Telemetry EventName="NETCORE_ENGINEERING_TELEMETRY" EventData="Category=Test" />
<Message Text="Running Java client tests" Importance="high" />
<Message Text="> gradlew $(GradleOptions) test" Importance="high" />
Expand All @@ -46,8 +47,6 @@
</Target>

<PropertyGroup>
<!-- Pass the Java Package Version down to Gradle -->
<GradleOptions>$(GradleOptions) -PpackageVersion="$(PackageVersion)"</GradleOptions>
<HelixCommand>chmod +x ./gradlew &amp;&amp; ./gradlew $(GradleOptions) test</HelixCommand>
<HelixCommand Condition="'$(IsWindowsHelixQueue)' == 'true'">call gradlew $(GradleOptions) test</HelixCommand>
</PropertyGroup>
Expand Down

0 comments on commit d7a6730

Please sign in to comment.