To demonstrate our continued commitment to support Java developers and their full lifecycle DevOps needs with Visual Studio Team Services (VSTS) and Team Foundation Server (TFS), I want to share some of our recent and exciting Java-related feature announcements. Our teams are working with large and small Java teams every day to better understand their needs and to solicit recommendations for improvements of our tools. So, we invite you to engage directly with our Java Cross Platform team at Twitter using @JavaALM to help shape the future of our Java support.
Package Management
Since introducing Package Management as a feature of VSTS and TFS in 2015, we have been providing support for NuGet packages for .NET and Windows applications. More recently, we added npm as a supported package type to help JavaScript developers. I’m excited to share we just announced the public preview of our Maven package type support for Java developers. Now VSTS and TFS provide first-class support for Maven packages and customers can opt-in to the Maven Public Preview to give it a spin. Click on the link below to discover the power and convenience of Maven package management in VSTS/TFS:
Maven Package Manager Public Preview Announcement
We are currently working on and will deliver soon a convenience feature for automatic authentication to your Maven package manage via our built-in Maven build task.
IDE Support
To provide the best support for Java developers, we provide VSTS/TFS plug-ins for the most popular Java IDEs and editors, including Eclipse, IntelliJ IDEA, and VS Code. These plug-ins enable the developer to integrate and interface directly with VSTS features from within the IDE without having to jump to the web interface and thus break their train of thought. Our IDE plug-ins are all being active developed with regular releases, are open sourced on Github and are open for contributions. Our plug-ins also support cross-platform development on Windows, Mac and Linux.
Eclipse
For over six years, we have provided the Team Explorer Everywhere (TEE) VSTS/TFS plug-in for the Eclipse IDE. TEE enables both Git and TFVC version control support for VSTS as well as other useful features such as tracking stories/tasks assigned to you and your team. As a member of the Eclipse Foundation, we continue to actively develop TEE, and the latest version, as well as the source code, is available on Github.
IntelliJ IDEA / Android Studio
In October 2015, we introduced our IntelliJ plug-in which works with all IntelliJ-based IDEs including IntelliJ IDEA and Android Studio. The plug-in provides advanced features for interfacing with your VSTS Git repositories, stories and work items, and pull requests. The latest version is available from within IDEA as a plug-in download and the source code is available on Github. Just recently, we announced the plug-in now supports TFVC operations:
IntelliJ Plug-in TFVC Support Announcement
VS Code
In March 2016, we first released our Visual Studio Code plug-in to support Git version control, and a variety of features including story, bug and work item integration, pull requests, and build summaries. The most recent version along with the source code are available on Github. A year later, just last month, we announced the plug-in now supports TFVC operations:
VS Code Plug-in TFVC Support Announcement
Deployment Extensions
For more than three years, VSTS has provided support for Ant, Maven and Gradle Java builds and now includes many cross-platform deployment capabilities including deploying to Tomcat and Jetty servers via a Tomcat Extension, as well as built in tasks for SSH File Copy and FTP. Recently, our team has expanded our enterprise deployment support by developing and releasing extensions for IBM and RedHat deployment capabilities:
Red Hat JBoss / Wildfly extension
Integration with Open-Source and Popular Tools
One of our goals is to provide customers the ability to plug-n-play their favorite or preferred DevOps tools with VSTS. A great example of this commitment, is our support for using Jenkins for your software builds and possibly your deployments. For over 8 months, we have provided the ability for a VSTS build task to initiate a Jenkins build job and to provide real-time display of the Jenkins console within VSTS as well as enable the developer to retrieve artifacts, code coverage and test results for display in your VSTS build summary. We remain committed to improving and extending our Jenkins support going forward as well. A great blog post describing our Jenkins capabilities is at the following link:
In addition to Jenkins, our Ant, Maven and Gradle build tasks integrate seamlessly with JaCoCo and Cobertura for code coverage. The code coverage results are displayed in your build summary along with your Junit test results all by simply selecting the appropriate check box in your build definition. We also support JMeter load testing and a variety of popular static analysis tools. We are partnered with SonarSource to provide you with SonarQube analysis options, and we also provide integrations with PMD, CheckStyle and FindBugs all as check-box options in your build definition.
Cloud Deployment
Once you have your Java web application developed, tested and ready, we enable multiple options ranging from deploying your app to a Windows or Linux-backed app service or to a virtual machine (VM) running in the cloud. Of course, we provide extensions and built-in capabilities for deploying to Azure App Service and the Azure Virtual Machines (VMs) as Microsoft’s cloud offerings, but the options for deploying using the SSH File Copy and FTP tasks mentioned above as well as providing the ability to run a shell script all enable developers to deploy to many different environments, data centers and even other cloud providers. A blog summarizing the options available for deploying Java apps to Azure is presented below:
Deploying Java Web Apps to Azure using VSTS
In much the same way you can deploy ASP.NET Core apps to Azure with VSTS, we have recently added the ability to use the same “Azure App Service Deploy” task to also enable deploying Java WAR files to the Azure App Service. To use this newly enhanced feature, we have created a new VSTS build template called “Azure Web App for Java” (as shown in the image below).
Choosing this template will provide a set of build tasks (as shown below) to accomplish building and deploying your Java WAR file to the Azure App Service. By default, Maven is selected as the primary build task but it can be substituted for Ant and Gradle (which are also included but disabled by default). The recent feature improvement enables the Azure App Service Deploy task (highlighted below) to recognize you are deploying a Java Web App when a WAR file is provided to the task and to subsequently to deploy the WAR file to Azure App Service.
The Azure App Service Deploy task (as shown above) does not provision a web app for you. You will need to use the Azure Portal (or the Azure Command Line) to create a new App Service. Then, you will need to make sure your Azure App Service is configured to run with Java (under “Application settings” as shown below) and you will also need to choose between running Tomcat or Jetty as your web container (once Java is enabled). Once the App Service is configured and running, the Azure App Service Deploy task in VSTS can deploy your WAR file with the above template.
We are actively working with other cloud providers to develop build and deployment extensions for deploying apps to their clouds. We anticipate these extensions to be available to customer in the next few months.
Summary
We at VSTS are committed to providing first-class support for Java developers now and in the future. As we have over the past 3 years, we will continue to add new features and enhance existing ones to meet the needs of Java teams ranging from small startups to large enterprises. Our team follows a 3-week sprint cycle, so we are frequently introducing new features to VSTS. If you want to actively track our progress, we suggest the following mechanisms:
- Subscribe to the Microsoft ALM Blog for all Java and other VSTS announcements
- Subscribe to our Java ALM YouTube Channel for informational and how-to videos related to Java and our IDE plug-ins
- Regularly visit our Java “news” page for specific Java announcements related to VSTS
- Follow our MSFT Java ALM Team on Twitter (this is a great way to provide us feedback)