Wind farms produce electricity and provide a source of renewable energy. The growth in wind farm installations in the past 10 years has led to an increase in the number of wind turbines reaching the end of their manufacturing warranties. As a consequence, the wind industry is now facing a rising cost of unscheduled maintenance, which is pushing up the operation and maintenance expenditures. Wind turbines experience stochastic loading due to seasonal variations in wind speed and direction. These harsh operational conditions lead to failures of wind turbine components, which are difficult to predict. Consequently, it is challenging to schedule maintenance actions that will avoid failures. In this paper, we derive algorithms for scheduling wind farm maintenance for wind turbines modeled explicitly as comprising multiple components: the gearbox, power generator, blades and control system. We perform simulations based on a real wind farm with 100 turbines and report on several wind farm performance measures. The results we obtain provide insights regarding how to efficiently manage limited maintenance resources in wind farms. For example, the results show that maintenance policies that consider performing maintenance on multiple components of a wind turbine on the same maintenance scheduled trip provides significant cost savings while reducing the number of turbine failures.