Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add incremental build and project references to java projects #25707

Merged
merged 3 commits into from
Sep 8, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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>
BrennanConroy marked this conversation as resolved.
Show resolved Hide resolved
<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" />
dougbu marked this conversation as resolved.
Show resolved Hide resolved

<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>
BrennanConroy marked this conversation as resolved.
Show resolved Hide resolved
</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" />
BrennanConroy marked this conversation as resolved.
Show resolved Hide resolved

<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" />
BrennanConroy marked this conversation as resolved.
Show resolved Hide resolved

<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